Определите, какой вывод появится в консоли для кода №103

Три таймера выведут один и тот же итоговый массив [2, 2, 2]. Все callbacks замыкают общую переменную i, изменённую синхронным циклом.

Короткий ответ

Что ответить на собеседовании

Три таймера выведут один и тот же итоговый массив [2, 2, 2]. Все callbacks замыкают общую переменную i, изменённую синхронным циклом.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой результат будет отображён в консоли после выполнения следующего фрагмента JavaScript‑кода:

for (var i = []; i.length < 3; i.push(2)) {
  setTimeout(() => {
    console.log(i);
  }, i.length * 1000);
}

Ответ

Три таймера выведут один и тот же итоговый массив [2, 2, 2]. Все callbacks замыкают общую переменную i, изменённую синхронным циклом.

Задержки вычисляются при регистрации как 0, 1000 и 2000 мс. Но сами callbacks начнут выполняться только после завершения текущего стека, когда три push уже сделаны. Для снимка содержимого пришлось бы отдельно скопировать массив на каждой итерации.

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

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

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

Подробнее