[undefined, undefined, undefined].map(function(val, i) { return i });

返回[0,1,2],而
Array(3).map(function(val, i) { return i });

返回[undefined,undefined,undefined]。

为什么?

最佳答案

在第一种情况下,您已经定义并初始化了一个具有三个undefined值的新数组,而在第二种情况下,您仅定义了一个可能长度为3的数组。
new Array(3)与您相同:

var arr = [];
arr.length = 3;

结果,通过隐式定义.length属性,.map()方法可以对内存中分配的数组进行迭代,该数组基本上保留零个定义项(即纯空)。

10-08 09:13
查看更多