Почему «let» в цикле for делает это? [дубликат]Javascript

Форум по Javascript
Ответить
Anonymous
 Почему «let» в цикле for делает это? [дубликат]

Сообщение Anonymous »

Я не совсем понимаю, почему это работает именно так. Я ожидаю, что результат будет 9, напечатанным 9 раз, потому что именно такая переменная k будет в конце. Но на самом деле результат равен 3 3 3 6 6 6 9 9 9, как будто переменная k воссоздавалась на каждой итерации, несмотря на то, что она создается в части инициализации цикла for, как я предполагал, это делается только один раз.
let closures = [];
for (let i = 0, k = 0; i < 3; i++) {
for (let j = 0; j < 3; j++, k++) {
closures.push(() => console.log(k));
}
}

closures.map(f => f());



Подробнее здесь: https://stackoverflow.com/questions/797 ... op-do-this
Ответить

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

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

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

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

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