JavaScript的双等于(==)总是对称的吗?

时间:2011-04-14 20:44:13

标签: javascript ecma262 comparison-operators equivalence symmetric

在许多情况下,JavaScript的类型强制相等运算符不可传递。例如,请参阅“JavaScript equality transitivity is weird。”

但是,是否存在==不是对称的情况?也就是说,a == btrueb == afalse

3 个答案:

答案 0 :(得分:35)

假设是对称的。但是,在某些版本的IE中存在不对称的情况:

window == document; // true
document == window; // false

答案 1 :(得分:30)

在Javascript中,==始终为symmetric

spec says

  

注2:相等运算符   维护以下不变量:

     
      
  • A != B相当于!(A == B)
  •   
  • A == B相当于B == A,除了评估顺序   A and B
  •   

答案 2 :(得分:10)

您实际问题的答案(操作员是对称的)是肯定的。 ECMA-262规范明确指出:

注2:相等运算符维护以下不变量:

  • A != B相当于!(A == B)
  • A == B相当于B == A,但评估AB的顺序除外。