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 сначала достигает своего максимального значения в текущем цикле событий, а уже в начале следующего цикла событий несколько раз выводится в консоль.
Спасибо за внимание.
