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

+1

所有的功能是指'i',其值是替换'5' *的时候,他们正在执行*。 – Blorgbeard

在这个特殊的功能中,值i是动态的,每当你改变i的值,它就会被新值替换。

我正在考虑作为参考价值。

所以,如果你将其更改为循环,直到10您将有所有我与10