37

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

但是,是否存在==不对称情况?也就是说,在哪里a == btrueb == a哪里false

4

3 回答 3

37

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

window == document; // true
document == window; // false
于 2011-04-14T20:52:22.900 回答
30

在 Javascript 中,==总是对称的。

规范说:

注 2 等式运算符保持以下不变量:

  • A != B相当于!(A == B)
  • A == B等价于B == A,除了 的求值顺序 A and B
于 2011-04-14T20:48:25.243 回答
11

您的实际问题(运算符是否对称)的答案是肯定的。ECMA-262规范明确指出:

注 2 等式运算符保持以下不变量:

  • A != B相当于!(A == B)
  • A == B等价于,除了和B == A的求值顺序。AB
于 2011-04-14T20:50:14.677 回答