Без запуска кода определить вывод в консоль для цикла с var и асинхронными callback через setTimeout; как изменится результат при замене var на let и что будет при const?

В типичном цикле var даёт всем callback общую переменную, let — отдельную привязку на итерацию, а const запрещает изменение счётчика.

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

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

В типичном цикле var даёт всем callback общую переменную, let — отдельную привязку на итерацию, а const запрещает изменение счётчика.

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

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

В типичном цикле var даёт всем callback общую переменную, let — отдельную привязку на итерацию, а const запрещает изменение счётчика.

Например, for (var i=0; i<3; i++) setTimeout(() => console.log(i),0) выведет три раза 3, а с let — 0, 1, 2. В варианте for (const i=0; i<3; i++) первый callback успеет планироваться, но i++ бросит TypeError; дальнейшее поведение зависит от обработки ошибки средой. В for (const item of items) отдельная константа на итерацию допустима. Без исходного snippet это иллюстрация, не его точный вывод.

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

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

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

Подробнее