Для классической проблемы var и отложенных callback можно создать отдельную область функции на каждой итерации и передать индекс аргументом.
Как исправить задачу с var в цикле, кроме замены var на let?
Для классической проблемы var и отложенных callback можно создать отдельную область функции на каждой итерации и передать индекс аргументом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для классической проблемы var и отложенных callback можно создать отдельную область функции на каждой итерации и передать индекс аргументом.
for (var i = 0; i < 3; i++) {
(function (index) {
setTimeout(function () { console.log(index); }, 0);
})(i);
}
Каждый callback замыкает свой параметр index, поэтому выводятся 0, 1, 2. Это решает именно захват общей переменной; если исходная проблема другая, нужен её код.