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 deA 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 deA
etB
.
10
répondu
Raph Levien
2011-04-14 20:50:14