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

时间:2018-09-07 19:55:58

标签: javascript equality

当应用于原始值时,我知道b = np.rollaxis(np.asarray(a).reshape(3, 4, 2), 2) b = np.asarray(a).reshape(2,4,3, order="F").swapaxes(1, 2) ==之间的区别。但是对于对象,它们似乎都是简单的身份比较。

===

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

4 个答案:

答案 0 :(得分:2)

是的,将两个对象与==比较与将它们与===比较相同。正如将两个字符串与==进行比较与===一样。如果值的类型相同,则两种比较方法将得出相同的结果。 As the specification states

  

7.2.14抽象平等比较

     

比较x == y(其中x和y是值)产生true或false。进行这样的比较   如下:

     
      
  1. 如果Type(x)与Type(y)相同,则      
        
    • 返回结果   执行严格平等比较x === y。
    •   
  2.   

答案 1 :(得分:1)

看起来像

我知道在javascript中“检查对象是否相等”的唯一方法是深度检查每个可能的键(但即使如此,它也只是鸭子类型检查)

答案 2 :(得分:1)

===中的extra =确保双方的类型相同。 ac都是相同类型的对象。因此,=====与此处无关。

答案 3 :(得分:-1)

好吧... ===是“比较身份和类型”。您已确定要比较两个对象(因此“类型”相同),从而留下“比较身份”,与==相同。

同样,如果比较两个number,则因为您已经知道它们是同一类型(number),所以=====相同。在这里,对象与基元没有什么特殊或不同之处。只是对象的唯一类型是object