Почему SetTimeout в петле печатает то же значение?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему SetTimeout в петле печатает то же значение?

Сообщение Anonymous »

Я пытаюсь понять, как 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»