【发布时间】:2017-06-29 12:35:10
【问题描述】:
var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
}
document.write(arr[1]());
如我所料,输出为 5
但是当我在 return i 之间添加 i++ 时;以及 for 循环的结束,如下面的代码,
var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
i++;
}
document.write(arr[1]());
屏幕显示错误, 未捕获的 TypeError:arr[1] 不是函数
我预计输出应该是 6,但我不明白为什么。
【问题讨论】:
-
因为在你的第一个循环之后
i将是2。我建议使用一些调试工具来查看您的变量或在您的代码中添加一些console.log()以了解下一次发生了什么。 -
因为你将索引增加 2,array[0],array[2],array[4]...
-
您是否还期望
arr中的所有函数输出相同的值?这就是将要发生的事情。
标签: javascript loops for-loop