В learnjs нашёл странную задачку, в которой код работает как-то очень непонятно, объясните.
Ведь с логической точки зрения при каждом вызове функции makeCounter(), которую мы присвоили во внешнюю переменную counter, у нас при выполнении сначала должен сброситься счётчик counter.currentCount в единицу! И только потом выполниться внутренняя функция counter() и результат следовательно всегда должен возвращаться как 1, 1, 1, 1, 1... (т.к. инкремент постфиксный возвращает старое значение)
function makeCounter() {
function counter() {
return counter.currentCount++;
};
counter.currentCount = 1;
return counter;
}
var counter = makeCounter();
alert( counter() ); // 1
alert( counter() ); // 2