javascript中的var循环无法理解输出,错误 var arr=[]; 对于(var i=0;i
,因为javascript中的var循环无法理解输出,错误 var arr=[]; 对于(var i=0;i,javascript,loops,for-loop,Javascript,Loops,For Loop,,因为i有两个增量,数组的指定元素将是0,2,和4。元素1 第一个赋值发生在i为0时。然后,i在循环结束时递增为1,然后在循环头的第三个子句中再次递增为2。因此下一个赋值是针对元素2。因为i有两个增量,数组的赋值元素将是>0、2和4。跳过元素1 第一个赋值发生在i为0时。然后,i在循环结束时增加到1,然后在循环头的第三子句中再次增加到2。因此下一个赋值是元素2。因为在第一个循环之后i将是2。我建议使用一些调试工具查看变量或向代码中添加一些console.log(),以了解下次发生的情况。因为您将
i
有两个增量,数组的指定元素将是0
,2
,和4
。元素1
第一个赋值发生在i
为0时。然后,i
在循环结束时递增为1,然后在循环头的第三个子句中再次递增为2。因此下一个赋值是针对元素2。因为i
有两个增量,数组的赋值元素将是>0
、2
和4
。跳过元素1
第一个赋值发生在i
为0时。然后,i
在循环结束时增加到1,然后在循环头的第三子句中再次增加到2。因此下一个赋值是元素2。因为在第一个循环之后i
将是2
。我建议使用一些调试工具查看变量或向代码中添加一些console.log()
,以了解下次发生的情况。因为您将索引增加2,数组[0],数组[2],数组[4]…您是否也希望arr
中的所有函数都输出相同的值?这就是将要发生的情况。因为在第一次循环之后,i
将是2
。我建议使用一些调试工具查看变量或添加一些console.log()
,让您的代码了解下一次发生了什么。因为您要将索引增加2,数组[0],数组[2],数组[4]…您是否也希望arr
中的所有函数都输出相同的值?这就是将要发生的事情。我可以在11分钟后接受您的回答,无论如何,谢谢您,没有闭包,arr
中的所有函数都不会输出5
@evolutionxbox是的,但OP显然已经知道了这一点;是的问题中提到了。说得好!我错过了最后一行,只是输出不是6
而是5
。我可以在11分钟后接受你的回答,无论如何,谢谢你。另外,没有闭包,arr
中的所有函数都不会输出5
@evolutionxbox是的,但显然OP已经知道了问题中提到了。说得好!我错过了最后一行,只是输出不是6
,而是5
。
var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
}
document.write(arr[1]());
var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
i++;
}
document.write(arr[1]());