假设我们有3个数组:
var arr1 = [undefined, undefined, undefined];
var arr2 = [, , ,];
var arr3 = new Array(3);
它们在JavaScript中都是相同的吗?
如果我们想使用undefined
作为固定大小数组的默认值,我们可以互换使用它们吗?
答案 0 :(得分:5)
后两个是相同的(虽然第二个可能在某些浏览器上引起问题),但第一个是不同的。
第一个
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方法都会跳过未初始化的数组元素。