Показать сообщение отдельно
  #1 (permalink)  
Старый 10.12.2016, 03:13
Новичок на форуме
Отправить личное сообщение для azhur Посмотреть профиль Найти все сообщения от azhur
 
Регистрация: 10.12.2016
Сообщений: 2

Помогите разобраться
Приветствую всех!
Недавно принялся изучать 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++;};"?

Буду очень признателен за ваше время. Нужна помощь. Заранее спасибо
Ответить с цитированием