Всем привет. Подскажите пожалуйста. Почему последнии два алерта выводят два раза 0 вместо 0, а затем 1? Почему при присваивании вызова функции в переменную результат при каждом вызове увеличивается на 1, а при обычном вызове функции нет? Т.е. куда записывается результат в первых 3х алертах и почему такое не происходит в последних двух?
function makeCounter() {
let count = 0;
return function() {
return count++;
};
}
let counter1 = makeCounter();
let counter2 = makeCounter();
alert( counter1() ); // 0
alert( counter1() ); // 1
alert( counter2() ); // 0 (независимо)
alert(makeCounter()());
alert(makeCounter()());