dr.Brain

doctor Brain

мир глазами веб-разработчика

JavaScript: директивы в цикле и цикле событий

объясняем, как работает setTimeout внутри цикла в JavaScript с директивами let и var

dr.Brain

время чтения 1 мин.

Photo by Denys Nevozhai on Unsplash

В статье “JavaScript: цикл и цикл событий” мы разобрали, какой результат будет получен, если воспользоваться функцией setTimeout() внутри цикла for, для которого счетчик i объявлен, как глобальная переменная с помощью директивы var.

Но, что получится, если вместо var использовать let?

function runner(){
  for(let i = 0; i < 3; i++){
    setTimeout(()=> console.log(i),0);
  }
}

runner()

Результат:

0
1
2

Так как счетчик i определён директивой let, область видимости для него ограничивается пределами одного блока.

Блок это что угодно между { }

Для setTimeout() цикл событий (Event loop) в данном случае будет находиться в пределах одной итерации цикла for..., поэтому каждый раз при выводе в консоль i будет иметь новое значение, замкнутое внутри своей области видимости.


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.