Array(0) 和 array = [] 有啥区别 [重复]
Posted
技术标签:
【中文标题】Array(0) 和 array = [] 有啥区别 [重复]【英文标题】:What is the difference between Array(0) and array = [] [duplicate]Array(0) 和 array = [] 有什么区别 [重复] 【发布时间】:2018-02-13 01:50:30 【问题描述】:使用 Array(0) 和 array = [] 创建数组有什么区别?
据我所知,两者都是空的 Array 对象。
array
>>> []
Array(0)
>>> []
但是当我比较它们时,它们会返回“假”。
var array = []
array === Array(0)
>>> false
这是怎么回事?
【问题讨论】:
@tkim90,我猜是因为Array(0)
中有一个0
,它被认为是第一个元素,而不是空的[]
,它总是表示空数组?
那是因为[] === [] => false
@user273072545345 Array(0)
表示一个空数组,而不是一个以0
作为第一个元素的数组。
【参考方案1】:
据我所知,两者都是空的 Array 对象。
他们是
但是当我比较它们时,它们会返回“假”。
当您在 javascript 中比较两个对象时,您是在测试它们是否是同一个对象,而不是它们是否是相同的对象。
【讨论】:
【参考方案2】:因为数组是对象,而不是原语:
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】: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]
【讨论】:
最后一个例子也可以用var a = new Array(1,2,3,4);
完成。
是的,如果您想以相同的方式创建一个包含一个元素的数组,您也可以这样做。例如: var p = new Array(4) 这将创建具有 4 个未定义值的数组。
是的,这是有区别的。【参考方案4】:
2个数组(甚至是空的)不能这样比较并且相等。
以下是如何正确比较 2 个数组的答案: How to compare arrays in JavaScript?
【讨论】:
谢谢你的链接,很有帮助以上是关于Array(0) 和 array = [] 有啥区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Array 和 Observable Array 有啥区别?
在 JavaScript 中,myArray.length = 0 与 myArray = new Array() 有啥区别? [复制]
Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区
React:使用 array.find 和 array.map 方法设置状态有啥区别? [复制]