Я сталкиваюсь с трудностями понимания этого фрагмента кода 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.

Другие вопросы по тегам