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

Tre*_*ham 36 javascript symmetric equivalence ecma262 comparison-operators

在许多情况下,JavaScript的类型强制相等运算符不可传递.例如,请参阅" JavaScript等同传递性很奇怪".

但是,是否有任何情况下,在==没有对称?也就是说,这里a == btrueb == afalse

Jas*_*run 35

应该是对称的.但是,在某些版本的IE中存在不对称的情况:

window == document; // true
document == window; // false
Run Code Online (Sandbox Code Playgroud)

  • 哦真是太精彩了.你能指定一下这个版本的IE吗? (11认同)

SLa*_*aks 30

在Javascript中,==始终是对称的.

规范说:

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

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

  • @Shtééf:也许它应该是,但事实并非如此.http://en.wikipedia.org/wiki/Symmetric_relation关系不是运营商. (8认同)
  • 不应该是*可交换*? (2认同)

Rap*_*ien 10

您的实际问题(操作符对称)的答案是肯定的.在ECMA-262规范明确规定:

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

  • A != B相当于!(A == B).
  • A == B相当于B == A,除了评价的顺序AB.