我发现在javascript中不能对空数组使用for each循环。有人能向我解释一下为什么吗?
我已经这样在javascript中初始化了一个数组:
var arr = new Array(10);
当我对数组使用 for each 循环时,什么都不会发生:
arr.forEach(function(i) {
i = 0;
});
结果仍然是一组未定义值的数组:
arr = [ , , , , , , , , , ];
我认为可能是因为数组中的每个元素都是未定义的,所以它甚至没有执行forEach。我认为它仍然会遍历未定义的元素。有人能解释一下为什么会发生这种情况吗?这个问题并不是在询问如何最有效地用零填充数组,而是在询问forEach循环和空数组的交互细节。
Array.apply(0, Array(10)).map(function(){return 0})
- elclanrsundefined
的数组。 - gen_Eric[]
,正如下面所指出的,forEach
永远不会遍历这个数组。 - adeneoconsole.log
给出了Array [ <10 empty slots> ]
。 - James Montagne