Я сталкиваюсь с трудностями понимания этого фрагмента кода JS
var myAlerts = [];
for (var i = 0; i < 5; i++) {
myAlerts.push(
function inner() {
alert(i);
}
);
}
myAlerts[0](); // 5
myAlerts[1](); // 5
myAlerts[2](); // 5
myAlerts[3](); // 5
myAlerts[4](); // 5
почему все значения в позициях 0-4 в массиве равны "5". Я нашел статью, касающуюся этого, так как Javascript поддерживает Lexical, а не Dynamic. Да, я понял это. Но есть ли способ понять эту основную концепцию для приведенного выше фрагмента Спасибо
1 ответ
Решение
В этом конкретном значении функциональности i
является динамическим, и он будет заменен новым значением всякий раз, когда вы вносите изменение в значение i.
я рассматриваюсь как значение по ссылке.
Так что если вы измените его на цикл до 10, у вас будет все, что я заменил на 10.