Приветствую всех!
Недавно принялся изучать javascript. Стали любопытны замыкания. В учебных материалах наткнулся на пример:
function makeCounter() {
function counter() {
return counter.currentCount++;
};
counter.currentCount = 1;
return counter;
}
var count = makeCounter();
alert( count() ); // 1
alert( count() ); // 2
var count2 = makeCounter();
alert( count2() ); // 1
alert( count2() ); // 2
alert( count2() ); // 3
Могли бы вы мне объяснить физику процесса? А именно преобразования, которые происходят тут.
Вложенные функции понятны, Lexical Env. тоже. Но, почему объявляется именнованная функция, а после идет обращение как к переменной return counter; ? Почему counter принимает значение " function counter() {return counter.currentCount++;};"?
Буду очень признателен за ваше время. Нужна помощь. Заранее спасибо