我很难理解这段JS代码

时间:2015-06-22 04:21:16

标签: javascript function scope hoisting

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支持词法范围而不是动态。是的,我明白了。但有没有办法理解上述代码片段的核心概念 谢谢

1 个答案:

答案 0 :(得分:0)

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

我被视为参考价值。

因此,如果您将其更改为for循环直到10,那么您将所有我的所有内容替换为10.