2015-08-26 6 views
1

У меня возникла проблема, когда я использовал функцию Array.prototype.forEach.Почему функция 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 

ответ

3

Из documentation (обратите внимание на жирный шрифт часть):

Foreach() выполняет указанную функцию обратного вызова один раз для каждого элемента, присутствующего в массиве в порядке возрастания. Он не вызывается для индекса свойства, которые были удалены или неинициализированы (т. Е. На разреженных массивах).

Поэтому поведение вашего приложения верное.

+0

большое спасибо, я просто проигнорировал эту важную строку раньше. – Deryckxie

+0

Если вы считаете, что это правильный ответ, вы можете проверить его с помощью зеленого флага. Спасибо. –

Смежные вопросы