В типичном цикле с var все отложенные callback замыкают одну переменную i, которая к моменту выполнения равна 5; let создаёт привязку для каждой итерации.
Задача на var в цикле: почему выводится 5 пятёрок и как исправить?
В типичном цикле с var все отложенные callback замыкают одну переменную i, которая к моменту выполнения равна 5; let создаёт привязку для каждой итерации.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В типичном цикле с var все отложенные callback замыкают одну переменную i, которая к моменту выполнения равна 5; let создаёт привязку для каждой итерации.
Например:
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 0);
}
Так выводятся 0, 1, 2, 3, 4. Альтернатива для var — передать значение в отдельную функцию-обёртку. Объяснение предполагает асинхронный запуск после завершения цикла; без него результат может быть другим.