【问题标题】: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 === [])

【问题讨论】:

标签: javascript


【解决方案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")为真
    猜你喜欢
    • 2018-09-03
    • 1970-01-01
    • 2015-11-29
    • 2010-12-20
    • 2012-02-15
    • 2014-01-22
    • 2012-04-19
    • 2020-04-27
    相关资源
    最近更新 更多