function() {
return count++; // есть доступ к внешней переменной "count"
};
}
Добрый день, почему если я вызываю функцию makeCounter(), то возвращается тело внутренней функции, а если я присваиваю вызов makeCounter() какой-либо переменной, то все работает?
Когда ты присвоил вызов makeCounter переменной, в переменной будет то что вернула функция, а у тебя это новая функция это называется - замыкание. Еще ты бы мог вызвать makeCounter 2 раза сразу вот так makeCounter()() https://learn.javascript.ru/closure
Да, я разобрался и если я буду вызывать makeCounter()() таким образом результат будет 0, потому он никуда не сохраняется, верно?
Сохраняется в scope Пока на эту функцию есть хоть одна ссылка (с) В твоём коде с ()() на эту функцию нет ни одной ссылки и она выбрасывается к херам
А результат 0 возвращается
Можешь его в переменную сохранить
Обсуждают сегодня