w3schools tag tab style page for color javascript ecma262 comparison-operators equivalence symmetric

javascript - tag - title of page html



¿El doble de JavaScript es igual(==) siempre simétrico? (3)

En Javascript, == es siempre symmetric .

La especificación dice :

NOTA 2 Los operadores de igualdad mantienen los siguientes invariantes:

  • A != B es equivalente a !(A == B) .
  • A == B es equivalente a B == A , excepto en el orden de evaluación de A and B

Hay muchos casos en los que el operador de igualdad de coerción de tipo de JavaScript no es transitivo. Por ejemplo, consulte "La transitividad de igualdad de JavaScript es extraña ".

Sin embargo, ¿hay algún caso en el que == no sea simétrico ? Es decir, ¿dónde a == b es true y b == a es false ?


La respuesta a su pregunta real (es el operador simétrico) es sí. La ECMA-262 establece explícitamente:

NOTA 2 Los operadores de igualdad mantienen los siguientes invariantes:

  • A != B es equivalente a !(A == B) .
  • A == B es equivalente a B == A , excepto en el orden de evaluación de A y B

Se supone que es simétrico. Sin embargo, hay un caso asimétrico en algunas versiones de IE:

window == document; // true document == window; // false