Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться (https://javascript.ru/forum/misc/66344-pomogite-razobratsya.html)

azhur 10.12.2016 03:13

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

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

azhur 10.12.2016 06:17

Ответ на свой вопрос нашел в видео:
https://www.youtube.com/watch?v=UsFPvkWeUgw

Достаточно корректно и понятно все описано, возможно пригодиться кому-нибудь.


Часовой пояс GMT +3, время: 06:39.