[undefined,undefined,undefined]和新的Array(3)如何在JavaScript中有所不同?

时间:2016-05-04 14:32:37

标签: javascript arrays

假设我们有3个数组:

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

它们在JavaScript中都是相同的吗? 如果我们想使用undefined作为固定大小数组的默认值,我们可以互换使用它们吗?

1 个答案:

答案 0 :(得分:5)

后两个是相同的(虽然第二个可能在某些浏览器上引起问题),但第一个是不同的。

第一个

var arr1 = [undefined, undefined, undefined];

对数组中的前三个索引进行显式赋值。即使您正在分配undefined,索引012是分配操作的目标这一事实意味着数组的那些元素将是被视为"真实"通过像.reduce()

这样的方法
[undefined, undefined, undefined].reduce(function(c) { return c + 1; }, 0);
// 3

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

许多Array.prototype方法都会跳过未初始化的数组元素。