Я пытаюсь понять, как SetTimeout работает внутри цикла в JavaScript. Я ожидал, что он печатает числа от 1 до 5, каждый из которых напечатан через одну секунду, но вместо этого он печатает число 6 пять раз. < /P>
Вот код, который я написал: < /p>
Код: Выделить всё
for (var i = 1; i {
console.log(i);
}, i * 1000);
}
< /code>
Я ожидал, что выход: < /p>
1
2
3
4
5
< /code>
, но вместо этого вывод: < /p>
6
6
6
6
6
Я думаю, что это может быть связано с тем, как var работает в JavaScript и как закрытия захватывают переменные в асинхронном коде. Я хотел бы понять, почему происходит это поведение и как я могу изменить код, чтобы он правильно печатал числа с 1 по 5 с одной секундой задержкой между каждым.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... same-value