В типичном цикле var даёт всем callback общую переменную, let — отдельную привязку на итерацию, а const запрещает изменение счётчика.
Без запуска кода определить вывод в консоль для цикла с var и асинхронными callback через setTimeout; как изменится результат при замене var на 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 это иллюстрация, не его точный вывод.