Кто может объяснить, почему выводится 10 раз число 10, а не по порядку. Я знаю, что таймер сначала добавляется в очередь, а потом не знаю, что происходит
for (var i=0; i<10; i++) {
setTimeout('alert(i)', 1000);
}
Кто может объяснить, почему выводится 10 раз число 10, а не по порядку. Я знаю, что таймер сначала добавляется в очередь, а потом не знаю, что происходит
for (var i=0; i<10; i++) {
setTimeout('alert(i)', 1000);
}
Все дело в том что функции, добавленные в setTimeout, попадают в конец очереди выполнения. Сначала выполнится тело цикла и вся логика и только в конце будет вызвана функция alert(i). Естественно что к тому времени цикл будет закончен и переменная i будет содержать 10
Рекомендую к прочтению данную статью
for (var i = 0; i < 10; i++) { setTimeout('alert(' + i + ')', 1000); }– Dec 18 '16 at 01:17