为啥 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() 不等于 []? [复制]的主要内容,如果未能解决你的问题,请参考以下文章