Почему «пусть» вести себя иначе, чем «var» внутри цикла с «settimeout»? [дублировать]Javascript

Форум по Javascript
Ответить
Anonymous
 Почему «пусть» вести себя иначе, чем «var» внутри цикла с «settimeout»? [дублировать]

Сообщение Anonymous »

Я пытаюсь понять разницу в поведении между let и var внутри цикла, особенно при использовании с SetTimeout.

Код: Выделить всё

for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Output: 3, 3, 3

for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Output: 0, 1, 2
Я попытался использовать как VAR, так и впустите внутреннее цикл с SETTIMEOUT , ожидая, что они будут вести себя одинаково и печатать числа от 0 до 2 через 1 секунду. Однако я заметил, что: < /p>

С помощью let вывод: 0, 1, 2 < /li>
С VAR вывод: 3, 3, 3 < /li>
< /ul>
Это поведение запутало меня, так как я думал, что оба будут только из 0 до 2 и напечатать каждое значение. Обзор может повлиять на это, но я хочу знать , почему именно это происходит и как замыкаются в таком поведении.

Подробнее здесь: https://stackoverflow.com/questions/796 ... settimeout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»