Есть много случаев, когда оператор равенства типа JavaScript не является транзитивным. Например, см. " Транзитивность равенства JavaScript странная ."
Однако, есть ли случаи, когда == не симметричен ? То есть где a == b равно true и b == a равно false?
==
a == b
true
b == a
false
Это предполагается симметричным.Однако в некоторых версиях IE существует асимметричный случай:
window == document; // true document == window; // false
В Javascript == всегда симметричный .
В спецификации указано :
ПРИМЕЧАНИЕ 2 Операторы равенстваследующие инварианты: A != B эквивалентно !(A == B). A == B эквивалентно B == A, за исключением порядка вычисления A and B.
ПРИМЕЧАНИЕ 2 Операторы равенстваследующие инварианты:
A != B
!(A == B)
A == B
B == A
A and B
Ответ на ваш фактический вопрос (является симметричным оператором) - да.В спецификации ECMA-262 прямо указано:
ПРИМЕЧАНИЕ 2 Операторы равенства поддерживают следующие инварианты:
A
B