Имеется код:function makeCounter() {
function counter() {
return counter.currentCount++;
};
counter.currentCount = 1;
return counter;
}
var counter = makeCounter();
alert( counter() ); // 1
counter.currentCount = 5; <i> <b> (*)</b></i>
alert( counter() ); // 5
Вопрос:
У нас есть два объекта с одним именем
counter: функция и переменная
В строке
(*) мы указываем новое значение объекта
counter
Тогда как компилятор понимает о чем идет речь? Почему применяет свойство именно к функции, как задумано, а не к переменной с другой функцией?
Переменная, как и свойства функции, видны везде.
Может ли быть что свойства внутренней функции распространяются на свойства внешней? У нас переменная содержит внешнюю функции, которая содержит в себе функцию со свойством.