我很难理解这段 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。
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。