var arr = [];
for(var i=0; i<5; i++){
arr[i] = function(){
return i;
};
}
document.write(arr[1]());
输出为5,正如我预期的那样
但是当我在返回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,但我不明白为什么。
答案 0 :(得分:6)
因为i
已经两个增量,所以指定的数组元素将是0
,2
和{{1 }}。 <$ 1}}被跳过。
当4
为0时,第一个赋值发生。然后,1
在循环结束时递增为1,然后在i
的第三个子句中再次递增为2循环头。所以下一个任务是元素2。