Разница в объявлении счетчика цикла через let и var в том что через var переменная-счетчик видна за пределами цикла в функции, через let - только в пределах цикла.
Объясните пожалуйста почему в этих случаях разные выводы
for(var i = 0; i < 10; i++) setTimeout(() => console.log(i), 1000)
тут получаем десять десяток.
for(let i = 0; i < 10; i++) setTimeout(() => console.log(i), 1000)
а тут от нуля до десяти.
С первым примером все понятно, а почему во втором так? i ведь создается один раз и прокручивается до начала выполнения первого setInterval до десятки.
Одним словом - почему в эти двух примерах разные результаты?
Ответ
https://learn.javascript.ru/let-const
При использовании в цикле, для каждой итерации создаётся своя переменная.
Переменная var – одна на все итерации цикла и видна даже после цикла.
С переменной let – всё по-другому.
Каждому повторению цикла соответствует своя независимая переменная let. Если внутри цикла есть вложенные объявления функций, то в замыкании каждой будет та переменная, которая была при соответствующей итерации.
Комментариев нет:
Отправить комментарий