37 votes

Le double égal (==) de JavaScript est-il symétrique?

Il existe de nombreux cas dans lesquels JavaScript du type de contraindre l'opérateur d'égalité n'est pas transitive. (Voir, par exemple, JavaScript transitivité de l'égalité est un peu bizarre....) Mais existe-il des cas dans lesquels il n'est pas symétrique-est, où l' a == b est true mais b == a est false?

Edit: Dans ma question initiale, j'ai tort, dit "réflexive" plutôt que "symétrique." Merci à tous ceux qui me corrige sur ce point.

37voto

Jason LeBrun Points 6130

C'est censé être symétrique. Cependant, il existe un cas asymétrique dans certaines versions d'IE:

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

30voto

SLaks Points 391154

Vous avez le mauvais terme.

Réflexive moyen a != a.
Le Javascript == relation est presque toujours réflexive, sauf qu' NaN != NaN.


Le mot que vous cherchez est symétrique.
En Javascript, == est toujours symétrique.

La spec dit:

NOTE 2 Les opérateurs d'égalité maintenir les invariants suivants:

  • A != B est équivalent à !(A == B).
  • A == B est équivalent à B == A, sauf dans l'ordre de l'évaluation de A and B.

11voto

Raph Levien Points 3518

La réponse à votre question réelle (c'est l'opérateur symétrique) est "oui". L' ECMA-262 spec déclare explicitement:

NOTE 2 Les opérateurs d'égalité maintenir les invariants suivants:

  • A != B est équivalent à !(A == B).
  • A == B est équivalent à B == A, sauf dans l'ordre de l'évaluation de l' A et B.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X