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