代码之家  ›  专栏  ›  技术社区  ›  John Montgomery

对于对象==和===是否相同?

  •  0
  • John Montgomery  · 技术社区  · 8 年前

    == === 当应用于基本值时。但对于对象来说,它们似乎都是一个简单的身份比较。

    var a = {}
    var b = a
    var c = {}
    
    a == b // true
    a === b // true
    
    a == c // false
    a === c // false
    

    是否存在比较两个对象会为每个操作符提供不同结果的情况,或者它们在功能上是等效的?

    4 回复  |  直到 8 年前
        1
  •  2
  •   Ivar    8 年前

    是的,比较两个物体 == 和把它们和 === . 就像比较两个字符串 与相同 . 如果值的类型相同,两种比较方法将给出相同的结果。 As the specification states :

    7.2.14抽象等式比较

    比较x==y,其中x和y是值,产生true或false。进行这样的比较

    1. 如果类型(x)与类型(y)相同,则
      • 返回结果 执行严格相等比较x===y。
        2
  •  1
  •   Naftali    8 年前

    我知道在javascript中“检查对象相等性”的唯一方法是深入检查每一个可能的键(但即使这样也只是duck类型检查)

        3
  •  1
  •   Shakil Ahmed    8 年前

    额外的=英寸 === a 和 c 两者都是同一类型的对象。所以呢 == ===

        4
  •  -1
  •   Mark Adelsberger    8 年前

    好。。。 === 是“比较身份和类型”。您已经确定要比较两个对象(因此“type”是相同的),剩下的“compare identity”与 == .

    number s、 既然你已经知道他们是同一类型( 数 ), === 与相同 . 这里的对象和原语没有什么特别或不同。只是对象的唯一类型是 object .