Все три вызова вернут 1: локальная переменная создаётся заново. Для последовательности сохраните её в замыкании, которое живёт между вызовами.
Почему функция счётчика всегда возвращает единицу
Все три вызова вернут 1: локальная переменная создаётся заново. Для последовательности сохраните её в замыкании, которое живёт между вызовами.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дана function next(){ let value = 0; return ++value; }. Что вернут три вызова и как получить 1, 2, 3 без глобальной переменной?
Ответ
Все три вызова вернут 1: локальная переменная создаётся заново. Для последовательности сохраните её в замыкании, которое живёт между вызовами.
Пример:
function createCounter() {
let value = 0;
return () => ++value;
}
const next = createCounter();
console.log(next(), next(), next()); // 1 2 3
Каждый вызов createCounter создаёт независимый счётчик. Важно создавать его один раз для нужного жизненного цикла, а не перед каждым вызовом next.