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

il y a de nombreux cas où L'opérateur d'égalité de JavaScript n'est pas transitif. Par exemple, voir " la transitivité D'égalité JavaScript est bizarre ."

cependant, y a-t-il des cas où == n'est pas symétrique ? C'est-à-dire, où a == b est true et b == a est false ?

33
demandé sur Community 2011-04-15 00:44:13

3 réponses

en Javascript, == est toujours symétrique .

Le 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 d'évaluation de A and B .
28
répondu SLaks 2015-08-04 04:00:54

c'est supposé être symétrique. Cependant, il existe un cas asymétrique dans certaines versions D'IE:

window == document; // true
document == window; // false
33
répondu Jason LeBrun 2011-04-14 20:52:22

la réponse à votre question actuelle (est l'opérateur symétrique) est oui. La spécification ECMA-262 stipule explicitement:

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

  • A != B est équivalent à !(A == B) .
  • A == B est équivalent à B == A , sauf dans l'ordre d'évaluation de A et B .
10
répondu Raph Levien 2011-04-14 20:50:14