Ааа, начинаю понимать.
Т.е. когда я объявил let counter1 = makeCounter() - тот тут я как раз таки вызываю makeCounter, которая замкнула значение переменной count и на выходе я получаю вложенную анонимную функцию:
return function() {
return count++;
};
Т.е. грубо говоря у меня counter1 = анонимная функция. И когда я вызываю counter1(), то получаю это:
Сергей delphinpro, да я это понимаю, но я не понимаю почему не происходит нового независимого замыкания, когда я вызываю второй alert(counter1())?
Т.е. не понимаю, почему:
alert(counter1()) - 0; alert(counter1()) - 1; почему второй вызов берет значение из первого? Разве тут не должен создаваться новый независимый счетчик?
Александр, Спасибо большое, вопрос 2 понял.
Не могли бы вы пожалуйста подсказать еще раз по вопросу 3?
Не могу понять, в чем тогда разница между alert(counter1()) - который второй и alert(counter2()), но при этом у них разные значения?
Т.е. когда я объявил let counter1 = makeCounter() - тот тут я как раз таки вызываю makeCounter, которая замкнула значение переменной count и на выходе я получаю вложенную анонимную функцию:
Т.е. грубо говоря у меня counter1 = анонимная функция. И когда я вызываю counter1(), то получаю это:
Верно?)