为啥 new Array() 不等于 []? [复制]

Posted

技术标签:

【中文标题】为啥 new Array() 不等于 []? [复制]【英文标题】:Why new Array() is not equal to []? [duplicate]为什么 new Array() 不等于 []? [复制] 【发布时间】:2019-04-16 10:06:57 【问题描述】:
new Array // outputs []

[] // outputs []

但是new Array === [] 是假的。为什么会这样?

console.log(new Array === [])

【问题讨论】:

***.com/questions/30820611/… [] === [] // false如何构造数组并不重要 【参考方案1】:

因为您在比较的每一侧都构造了两个空数组。它们指的不是同一个数组。

【讨论】:

【参考方案2】:

因为它们是两个不同的引用。它们可以是两个没有元素的数组,但它们是堆上完全不同的两个对象。

【讨论】:

也许我理解错了,但typeof new Array === typeof [] 仍然是真的!!! @Sanjay 是的,你理解错了。您的问题示例是比较两个单独的对象,但在您的评论中您正在测试类型。 @Sanjay typeof 是什么? typeof 运算符返回一个字符串,指示未计算的操作数的类型,根据developer.mozilla.org/en-US/docs/Web/javascript/Reference/…。话虽如此,上面的表达式为什么是正确的就很清楚了。 two completely different objects这句话让我迷惑了哈哈 因为typeof返回一个string,而且它们是两个对象,所以("object"==="object")为真

以上是关于为啥 new Array() 不等于 []? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 arr = [] 比 arr = new Array 快?

为啥是List list = new ArrayList,而不直接用ArrayList

python 的PIL中的image 同一数据为啥show()和save()显示和保存的图片不一样?

为啥在评估复值积分时 boost::multiprecision::exp 会卡住?

为啥对 C# 数组使用“新”语法?

PHP 任意组合求合