Array(2)和[undefined,undefined]之间有什么区别?

acc*_*cme 14 javascript arrays

[undefined, undefined, undefined].map(function(val, i) { return i });
Run Code Online (Sandbox Code Playgroud)

返回[0,1,2],而

Array(3).map(function(val, i) { return i });
Run Code Online (Sandbox Code Playgroud)

返回[undefined,undefined,undefined].

为什么?

Vis*_*ioN 13

在第一种情况下,您已经定义初始化了一个具有三个undefined值的新数组,而在第二种情况下,您 定义了一个可能长度为3 的数组.

new Array(3) 和你一样:

var arr = [];
arr.length = 3;
Run Code Online (Sandbox Code Playgroud)

结果,具有.length隐式定义的属性,.map()方法可以对在存储器中分配的数组进行迭代,其基本上保持零定义的项(即纯空).