Is JavaScript's double equals (==) always symmetric?
There are many cases in which JavaScript's type-coercing equality operator is not transitive. For example, see "JavaScript equality tran开发者_运维问答sitivity is weird."
However, are there any cases in which == isn't symmetric? That is, where a == b is true and b == a is false?
It's supposed to be symmetric. However, there is an asymmetric case in some versions of IE:
window == document; // true
document == window; // false
In Javascript, == is always symmetric.
The spec says:
NOTE 2 The equality operators maintain the following invariants:
A != Bis equivalent to!(A == B).A == Bis equivalent toB == A, except in the order of evaluation ofA and B.
The answer to your actual question (is the operator symmetric) is yes. The ECMA-262 spec explicitly states:
NOTE 2 The equality operators maintain the following invariants:
A != Bis equivalent to!(A == B).A == Bis equivalent toB == A, except in the order of evaluation ofAandB.
加载中,请稍侯......
精彩评论