Javascript 我很难理解这段JS代码 var myAlerts=[]; 对于(var i=0;i
为什么数组中位置0-4处的所有值都是“5”。我发现一些文章认为Javascript支持词法范围而不是动态范围。是的,我知道了。但是,对于上面的代码片段,有没有办法理解这个核心概念呢Javascript 我很难理解这段JS代码 var myAlerts=[]; 对于(var i=0;i,javascript,function,scope,hoisting,Javascript,Function,Scope,Hoisting,为什么数组中位置0-4处的所有值都是“5”。我发现一些文章认为Javascript支持词法范围而不是动态范围。是的,我知道了。但是,对于上面的代码片段,有没有办法理解这个核心概念呢 谢谢您在这个特定的功能中,i是动态的,每当您更改i的值时,它都将被新值替换 我被认为是有价值的 所以,如果你把它改为for循环,直到10,你将得到所有的i都替换为10 所有函数都引用i,其值在执行时为5。 var myAlerts = []; for (var i = 0; i < 5; i++) {
谢谢您在这个特定的功能中,
i
是动态的,每当您更改i的值时,它都将被新值替换
我被认为是有价值的
所以,如果你把它改为for循环,直到10,你将得到所有的i都替换为10 所有函数都引用
i
,其值在执行时为5
。
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