/ / Как [undefined, undefined, undefined] и new Array (3) са различни в JavaScript? [дубликат] - javascript, масиви

Как [недефинирани, неопределени, неопределени] и нови Array (3) са различни в JavaScript? [дубликат] - javascript, масиви

Да предположим, че имаме 3 масива:

var arr1 = [undefined, undefined, undefined];
var arr2 = [, , ,];
var arr3 = new Array(3);

Всички ли са идентични в JavaScript? Ако искаме да използваме undefined като стойност по подразбиране за масив с фиксиран размер, можем ли да ги използваме взаимозаменяемо?

Отговори:

5 за отговор № 1

Вторите две са едни и същи (макар че втората може да предизвика проблеми при някои браузъри), но първата е различна.

Първият

var arr1 = [undefined, undefined, undefined];

прави изричен задания към първите три индекса в масива. Дори и да присвоявате undefinedфакта, че индексите 0, 1, и 2 са цели на операции по присвояване означава, че тези елементи на масива ще бъдат третирани като "реални" по методи като .reduce():

[undefined, undefined, undefined].reduce(function(c) { return c + 1; }, 0);
// 3

[,,].reduce(function(c) { return c + 1; }, 0);
// 0

Много от методите Array.prototype пропускат неинициализирани елементи на масив.