使用Array(0)和array = []创建数组有什么区别?
据我所知,这两个都是空的Array对象。
array
>>> []
Array(0)
>>> []
但是当我比较它们时,它们会返回“假”。
var array = []
array === Array(0)
>>> false
这里发生了什么?
答案 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]