[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()
方法可以对内存中分配的数组进行迭代,该数组基本上保留零个定义项(即纯空)。