为什么forEach函数不执行任何循环步骤

时间:2015-08-26 13:32:18

标签: javascript arrays

当我使用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

1 个答案:

答案 0 :(得分:3)

来自documentation(请注意粗体部分):

  

forEach()为每个存在的元素执行一次提供的回调   在数组中按升序排列。 不会为索引调用它   已删除或未初始化的属性(即稀疏   阵列)。

因此,您的应用程序的行为是正确的。