Какая разница в поведении между let и var в цикле for?

// Выведет 10 раз значение 10
for (var i = 0; i < 10; i++) {
 // замыкание (к моменту запуска таймера переменная i уже равна 10)
 setTimeout(function () {
   console.log(i);
 }, 0);
}

// Выведет последовательно 0,2,3,...,9
for (let i = 0; i < 10; i++) {
 setTimeout(function () {
   console.log(i);
 }, 0);
}

При использовании в цикле, для каждой итерации создаётся своя переменная.

Переменная var – одна на все итерации цикла и видна даже после цикла.

С переменной let – всё по-другому. Каждому повторению цикла соответствует своя независимая переменная let. Если внутри цикла есть вложенные объявления функций, то в замыкании каждой будет та переменная, которая была при соответствующей итерации.

results matching ""

    No results matching ""