Wenn Sie Klammern hinzufügen, um zu zeigen, wie JavaScript es interpretiert, wird es viel klarer:
%Vor% Lass uns das auseinander nehmen. Zuerst wird 3 > 2
ausgewertet. Ja, drei sind größer als zwei. Daher haben Sie jetzt Folgendes:
true
wird in eine Zahl umgewandelt. Diese Zahl ist zufällig 1
. 1 > 1
ist offensichtlich falsch. Daher lautet das Ergebnis:
Erste 3>2
ergibt TRUE, was wahrscheinlich implizit in 1 konvertiert wird. Sie erhalten also 1>1
, was FALSE ist.
Vielleicht möchten Sie hier einen Fehler, aber Javascript ist sehr schwach typisiert, also wird es versuchen, implizite Konvertierungen zu machen, ohne sich zu beschweren.
BEARBEITEN:
Sie fragen also, warum die Syntax der Programmiersprache nicht immer mit der mathematischen Notation übereinstimmt? Ich würde sagen (1) sie haben unterschiedliche Prioritäten und (2) es macht mehr Sinn für den Compiler, es anders zu machen.
Dies ist jedoch nicht ungewöhnlich:
x = 3
(Zuweisung) x >> 1
(bitshift) a | b
(bitweises OR). Die Liste geht weiter ...
Lasst uns grundlegend brechen, seine zwei & gt; Operatoren mit gleicher Priorität, also welche läuft zuerst?
JavaScript hat die Operator-Priorität zugewiesen, wie in der Operator-Prioritätstabelle von heruntergeladen MDN
Größer als (& gt;) (11 in der Tabelle) läuft von links nach rechts, daher läuft als erstes 3 & gt; 2, was zu WAHR
führtJetzt haben wir also TRUE & gt; 1,
Wenn JavaScript zwei verschiedene Arten von Werten (bool und number) zum Vergleich sieht, wird der Typ "coercion" eingegeben, was bedeutet, dass TRUE (type conversion) in 1,
umgewandelt wirdSo wird JavaScript als 1 & gt; 1 ausgeführt, was zu FALSE
führtTags und Links javascript