【发布时间】:2014-12-11 21:52:03
【问题描述】:
我发现我不能在 javascript 的空数组上使用 for each 循环。谁能给我解释一下这是为什么?
我已经像这样在 javascript 中初始化了一个数组:
var arr = new Array(10);
当我在数组上使用 for each 循环时,什么也没有发生:
arr.forEach(function(i) {
i = 0;
});
结果仍然是一个未定义值的数组:
arr = [ , , , , , , , , , ];
我认为可能由于数组中的每个项目都未定义,因此它甚至不会执行 forEach。我认为它仍然会遍历未定义的项目。谁能解释为什么会这样? 这个问题不是问如何最有效地用零填充数组,而是询问每个循环与空数组的交互的详细信息。
【问题讨论】:
-
某处有一个流行的 dup...
Array.apply(0, Array(10)).map(function(){return 0}) -
这是一个奇怪的结果,我还以为你有一个长度为 10 的空数组?
-
@adeneo:这是一个包含 10 个
undefineds 的数组。 -
@RocketHazmat - 当然会,我很困惑!
-
@RocketHazmat 警告数组会给出一个逗号列表(至少在 FF 中,尽管我认为在其他浏览器中也是如此)。有趣的是
console.log给了Array [ <10 empty slots> ]。
标签: javascript