我很难理解这段 JS 代码

I am facing hard time understanding this piece of JS code

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 支持词法范围而不是动态范围。是的,我明白了。但是有什么方法可以理解上面代码片段的这个核心概念 谢谢

在此特定功能中,值 i 是动态的,只要您更改 i 的值,它就会被新值替换。

我被认为是参考值。

因此,如果您将其更改为 for 循环直到 10,您将把所有 i 替换为 10。