当我使用Array.prototype.forEach函数时遇到了问题。
这是我的代码,我想知道为什么当没有初始值的数组构造函数创建数组时,forEach函数不会执行任何循环步骤
var arr = new Array(3) //arr : [undefined, undefined, undefined]
arr.forEach(function(){
console.log('my code');
})//doesn't output the expected result
//this works well
for(var i = 0, length = arr.length; i < length; i++)
console.log('output the expected result')
//this case works well too.
var arr2 = new Array(undefined, undefined, undefined) // arr2: [undefined, undefined, undefined]
arr2.forEach(function(){
console.log('my code');
})//works well
答案 0 :(得分:3)
来自documentation(请注意粗体部分):
forEach()为每个存在的元素执行一次提供的回调 在数组中按升序排列。 不会为索引调用它 已删除或未初始化的属性(即稀疏 阵列)。
因此,您的应用程序的行为是正确的。