JavaScript: цикл и цикл событий
объясняем, как работает setTimeout внутри цикла в JavaScript
Какой результат будет получен, если воспользоваться функцией setTimeout()
внутри цикла for
?
Разберем следующий пример:
function runner(){
for(var i = 0; i < 3; i++){
setTimeout(()=> console.log(i),0);
}
}
runner()
Результат:
3
3
3
Благодаря setTimeout()
, вывод переменной i
, к которой мы обращаемся внутри цикла for
, каждый раз откладывается на начало следующего цикла событий (Event Loop). Именно поэтому i
сначала достигает своего максимального значения в текущем цикле событий, а уже в начале следующего цикла событий несколько раз выводится в консоль.
Спасибо за внимание.