Array(0)和array = []之间有什么区别

时间:2017-09-04 20:19:10

标签: javascript arrays data-structures

使用Array(0)和array = []创建数组有什么区别?

据我所知,这两个都是空的Array对象。

array
>>> []
Array(0)
>>> []

但是当我比较它们时,它们会返回“假”。

var array = []
array === Array(0)
>>> false

这里发生了什么?

4 个答案:

答案 0 :(得分:2)

  

据我所知,这两个都是空的Array对象。

他们是

  

但是当我比较它们时,它们会返回“假”。

当您比较JavaScript中的两个对象时,您正在测试它们是否是同一个对象,而不是它们是否是相同的对象。

答案 1 :(得分:1)

2个阵列(甚至是空的)无法以这种方式进行比较并且是相同的。

以下是如何以正确的方式比较2个数组的答案: How to compare arrays in JavaScript?

答案 2 :(得分:1)

因为数组是对象,而不是基元:



var x = 5; // primitive
var y = 5; // primitive
console.log(x == y); // True
var x = [5]; // object
var y = [5]; // object
console.log(x == y); // False
var x = '5'; // primitive
var y = '5'; // primitive
console.log(x == y); // True
var x = {0:5}; // object
var y = {0:5}; // object
console.log(x == y); // False




关于差异,请查看此问题的答案(已接受和第二个):What’s the difference between “Array()” and “[]” while declaring a JavaScript array?
更多关于基元和对象:object vs. primitive

答案 3 :(得分:1)

var p = Array(0); // []
[] var p = []   // []

两者都以相同的方式创建一个空数组。

var p = Array(3); //[undefined, undefined, undefined]

你也可以使用:

var p = [undefined, undefined, undefined];

同样,两者在内部以相同的方式工作,但具有不同的用例:

对于前。如果要创建包含n个元素的数组:

var array = new Array(n) // [undefined * n]

如果要在创建时初始化数组的值:

var arry = [1,2,3,4];

这里要注意的一件事是你可以使用new Array()创建一个初始化数组:

var p = new Array(1,2,3,4); // [1,2,3,4]

但是当你尝试创建一个带有一个初始值的数组时,它需要一个参数并创建一个这个大小的数组:

var p = new Array(4)  // [undefined*4]