Как исправить задачу с var в цикле, кроме замены var на let?

Для классической проблемы var и отложенных callback можно создать отдельную область функции на каждой итерации и передать индекс аргументом.

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

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

Для классической проблемы 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. Это решает именно захват общей переменной; если исходная проблема другая, нужен её код.

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

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

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

Подробнее