См. Этот код:
for(var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 200);
}
Это классическая ошибка, когда она печатает окончательное значение i
несколько раз вместо печати требуемого последовательного вывода.
Я знаю, что можетисправить это, используя let
вместо var
:
for(let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 200);
}
Меня смущает то, почему не исправляет это:
for(var i = 0; i < 5; i++) {
setTimeout(function() {
let n = i;
console.log(n);
}, 200);
}
Теперь это должно быть исправлено по той же причине, что и предыдущий код, но ошибка сохраняется.Почему это так?