Javascript - 使用空值初始化数组

Mau*_*aes 14 javascript arrays

在Javascript中,为什么

> var myArray = new Array(3);
Run Code Online (Sandbox Code Playgroud)

不同于:

> var otherArray = [*null*, *null*, *null*];
Run Code Online (Sandbox Code Playgroud)

Obs:(myArray == otherArray)退货false.

而且,我怎么能得到一个变量,就像otherArray一个充满'nulls'的数组,但是我想要的是什么尺寸?

编辑

[undefined, undefined, undefined] 
Run Code Online (Sandbox Code Playgroud)

也不等于myArray.

小智 75

使用EcmaScript 6(ES2105),创建一个包含例如五个空值的数组就像这样简单:

const arr = new Array(5).fill(null);
Run Code Online (Sandbox Code Playgroud)

MDN参考


Chr*_*tos 5

var myArray = new Array(3);将创建一个空数组。因此,由于这个原因,myArrayotherArray是不同的数组。此外,即使它们具有相同的值(三个undefined值),数组也不会相同。数组是一个对象,变量myArray保存对该对象的引用。具有相同值的两个对象并不相同。

例如,

var a = new Object();
var b = new Object();
console.log(a===b); // outputs false.
Run Code Online (Sandbox Code Playgroud)

除此之外:

var customerA = { name: "firstName" };
var customerB = { name: "firstName" };
console.log(customerA===customerB); // outputs false.
Run Code Online (Sandbox Code Playgroud)

更新

此外,在甚至索引都没有初始化的情况下var myArray = new Array(3),正如保罗在评论中正确指出的那样。

如果你尝试这样做:

var array = [1,2,3];
console.log(Object.keys(array));
Run Code Online (Sandbox Code Playgroud)

您将得到以下输出:

["1","2","3"];
Run Code Online (Sandbox Code Playgroud)

如果你尝试这样做:

var array = new Array(3);
console.log(Object.keys(array));
Run Code Online (Sandbox Code Playgroud)

你将得到输出:

[]
Run Code Online (Sandbox Code Playgroud)

  • 这不仅仅是项目_未定义_,索引也没有初始化; (2认同)