Ключевое слово var и имя функции, используемые для доступа к переменным - PullRequest
0 голосов
/ 09 февраля 2020

Как prop1 все еще доступен вне тела функции?

function myFunc() {
  var prop1 = 10;
  this.myChildFunc = function() {
    alert("value of prop1: " + prop1);
  }
}

myFunc();
myFunc.prop1 = 20; // How prop1 is still accessible using function name ? and outside function scope?
alert("prop1:" + myFunc.prop1);

1 Ответ

2 голосов
/ 09 февраля 2020

Функции являются объектами, поэтому они могут иметь свойства, но это просто свойства, не более того.

Итак, переменная , которую вы объявили внутри функции (var prop1) не имеет ничего общего со свойством объекта функции (myFunc.prop1). У них просто одно и то же имя.

Чтобы увидеть это, давайте посмотрим на это:

function myFunc() {
  var prop1 = 10;
  console.log(prop1);
}

myFunc();                  //10
console.log(myFunc.prop1); //undefined - no such property
myFunc.prop1=20;           //myFunc.prop1 is now 20
myFunc();                  //variable is still 10
console.log(myFunc.prop1); //property is still 20
...