我只是想知道为什么不能在未定义的数组上创建 forEach。
代码:
var arr = new Array(5); // [undefined x 5]
//ES5 forEach
arr.forEach(function(elem, index, array) {
console.log(index);
});
//underscore each
_.each(arr, function(elem, index, array) {
console.log(index);
});
这两个示例都不执行功能。
现在要制作 foreach,我必须制作:
var arr = [0,0,0,0,0];
然后在上面制作forEach。
我正在尝试创建一个具有指定大小的数组并循环遍历它,避免 for
循环。我认为使用 forEach 比使用 for 循环更清楚。对于长度为 5 的数组,这不是问题,但是对于更大的数组,它会很丑陋。
为什么循环遍历未定义值的数组会出现问题?
原文由 Tukkan 发布,翻译遵循 CC BY-SA 4.0 许可协议
Array(5)
本质上等同于在 javascript 中,更改数组的长度不会为其数字属性设置任何值,也不会在数组对象中定义这些属性。所以数字属性是未定义的,而不是具有未定义的值。您可以使用以下方法检查它:
迭代时,javascript 会遍历数组的数字属性,因此如果这些属性不存在,则没有什么可迭代的。
您可以通过执行以下操作来检查它:
以下代码:
创建
length ===2
的数组并将 数值属性 0 和 1 设置为 undefined 。