Почему функция счётчика всегда возвращает единицу

Все три вызова вернут 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее