有很多情况下,JavaScript的类型强制比较运算符不具有传递性。例如,参见“JavaScript equality transitivity is weird”。
然而,是否存在这样的情况,即==
不是对称的?也就是说,当a == b
为true
,b == a
却为false
吗?
有很多情况下,JavaScript的类型强制比较运算符不具有传递性。例如,参见“JavaScript equality transitivity is weird”。
然而,是否存在这样的情况,即==
不是对称的?也就是说,当a == b
为true
,b == a
却为false
吗?
这应该是对称的。然而,在某些版本的 IE 中存在不对称情况:
window == document; // true
document == window; // false
你实际问题的答案(操作符是否对称)是肯定的。 ECMA-262规范明确指出:
注意2: 相等运算符维护以下不变式:
A != B
等价于 !(A == B)
。A == B
等价于 B == A
,只有A
和B
的评估顺序不同。