Weitere Vergleiche in JavaScript (Weitere Vergleiche in JavaScript), Lektion, Seite 723934
https://www.purl.org/stefan_ram/pub/weitere_vergleiche_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Der Kleiner-Operator in JavaScript 

Einführende Beispiele

Falls beide Operandenwerte numerisch sind, so besagt dieser Operator, daß der erste Wert auf dem Zahlenstrahl vor  dem zweiten kommt.

Auswertung
2 < 3
true

Falls beide Operandenwerte Zeichenfolgen sind, drückt dieser Operator aus, daß die linke Zeichenfolge lexikographisch  (alphabetisch) vor  der rechten kommt.

Auswertung
'abc' < 'def'
true

Die Syntax von »<«

Der Operator »<« ist ein binärer Infixoperator, wie beispielsweise auch »===«.

Neue, erweiterte Syntax (vereinfacht)
Ausdruck
.----------.
---.----------------->| Literal |-------------------------------.--->
| '----------' ^
| .-. .----------. .-. |
'-------->( ( )--->| Ausdruck |--->( ) )----------------------'
| '-' '----------' '-' |
| .-. .----------. |
'-------->( - )--->| Ausdruck |-------------------------------'
| '-' '----------' |
| .-. .----------. |
'-------->( + )--->| Ausdruck |-------------------------------'
| '-' '----------' |
| .------. .----------. |
'--->( typeof )--->| Ausdruck |-------------------------------'
| '------' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( ** )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( * )----->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( / )----->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( + )----->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( - )----->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------------->| Ausdruck |--->( < )----->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( === )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( !== )--->| Ausdruck |----'
'----------' '---' '----------'

Prioritäten

Der Operator »<« hat eine höhere Priorität als der Operator »===« und ist linksassoziativ.

Eigenschaften von Operatoren

A P A (A = Aritaet, P = Position [Zirkumfix, Praefix, Infix], A = Assoziativitaet)

() 1 Z Eingeklammerter Ausdruck
+ - typeof 1 P Unaere vorangestellte Operatoren (Vorzeichen)
** 2 I R Potenzieren
* / 2 I L "Punktrechnung": Multiplikation, Division
+ - 2 I L "Strichrechnung": Addition, Subtraktion
< 2 I L Kleiner
== != === !== 2 I L Gleichheit, Ungleichheit

Die Semantik von »<«

Das Wichtigste zur Semantik wurde schon im Abschnitt „Einführende Beispiele“ gesagt.

Man findet mehr zu Semantik in der ECMAScript-Spezifikation unter “12.10.3 Runtime Semantics: Evaluation ”, wo die Semantik unter Bezug auf “7.2.14 Abstract Relational Comparison ” beschrieben wird. (Stand 2020).

Numerische Vergleiche

Unter einem numerischen Vergleich verstehen wir hier einen Vergleich zweier Zahlenwerte (numerische Zeichenfolgen zählen wir hier nicht zu den Zahlenwerten).

Hier hat der Operator »<« seine in der Mathematik übliche Bedeutung. Er ergibt »true«, genau dann, wenn der erste Wert auf dem Zahlenstrahl vor  dem zweiten kommt.

Wir zeigen Beispiele numerischer Vergleiche:

Zwei ist kleiner als Drei.

Auswertung
2 < 3
true

Drei ist nicht  kleiner als Drei (sondern gleich).

Auswertung
3 < 3
false

Vier ist nicht  kleiner als Drei (sondern größer).

Auswertung
4 < 3
false

Zeichenfolgenvergleiche

Unter einem Zeichenfolgenvergleich verstehen wir hier einen Vergleich zweier Zeichenfolge (numerisch oder nicht-numerisch).

Hier ergibt der Operator »<« »true«, genau dann, wenn der erste Wert lexikographisch vor  dem zweiten kommt. Zum Vergleich einzelner Zeichen wird deren Position im Unicode  verwendet.

Wir zeigen Beispiele zum lexikographischen Vergleich:

»a« kommt im Unicode  vor »b«.

Auswertung
'a' < 'b'
true

»A« kommt im Unicode vor »a«.

Auswertung
'A' < 'a'
true

Die beiden Zeichenfolgen unterscheiden sich schon an der ersten Stelle, und das Zeichen, das bei der linken Zeichenfolgen an dieser Stelle steht (»b«) kommt vor dem Zeichen, das bei der rechten Zeichenfolgen an jener Stelle steht (»c«).

Auswertung
'ba' < 'cad'
true

Die beiden Zeichenfolgen sind zunächst gleich (beide beginnen mit »a«), aber dann unterscheiden sie sich an einer Stelle (»b« beziehungsweise »c«), und das Zeichen, das bei der linken Zeichenfolge an dieser Stelle steht, (»b«) kommt vor dem rechten Zeichen, das bei der rechten Zeichenfolge an jener Stelle steht (»c«).

Auswertung
'ab' < 'ac'
true

Ein Präfix gilt als kleiner. (»ab« ist ein Präfix von »abc«, da »abc« mit »ab« beginnt.)

Auswertung
'ab' < 'abc'
true

Zeichenfolgen mit Ziffern werden nach denselben Regeln verglichen wie andere Zeichenfolgen.

Auswertung
'01' < '1'
true

Gemischte Vergleiche

Unter einem gemischten Vergleich  verstehen wir hier einen Vergleich einer Zeichenfolge (numerisch oder nicht-numerisch) mit einer Zahl.

Bei einem gemischten Vergleich wird die Zeichenfolge in eine Zahl gewandelt (als stünde das Vorzeichen »+« davor).

Auswertung
+'01'
1
Auswertung
'01' < 1
false

Würde die Zahl hingegen in eine Zeichenfolge gewandelt werden, ergäbe sich ja »true«.

Auswertung
'01' < '1'
true

Man vergleiche mit der gemischten Addition, wo die Zahl gegebenenfalls tatsächlich in eine Zeichenfolge  gewandelt wird.

Auswertung
'01' + 1
"011"

Die Zahl »1« kommt vor »2«.

Auswertung
'01' < 2
true

Das Leerzeichen ergibt den Zahlenwert »0«.

Auswertung
+' '
0
Auswertung
' ' < 1
true

Vergleiche mit Wahrheitswerten

Falls ein Wahrheitswert in einem Vergleich vorkommt, so wird dieser in eine Zahl gewandelt (als stünde das Vorzeichen »+« davor), und der Vergleich wird anschließend so durchgeführt wie ein Vergleich mit einer Zahl an Stelle des Wahrheitswertes.

Auswertung
false < true
true
Auswertung
true < 2
true
Auswertung
true < 1
false

Spezielle Situationen

Falls einer der Operandenwerte »NaN« oder «undefined» ist, sollte das Ergebnis eigentlich »undefined« sein, aber weil dieser Operator immer einen Wahrheitswert ergeben soll, ergibt sich »false«.

Die abstrakte Operation von “7.2.14 Abstract Relational Comparison ” ergibt zunächst den Wert «undefined». Der Operator macht daraus dann laut “12.10.3 Runtime Semantics: Evaluation ” jedoch den Wert «false». (Stand 2020).

Auswertung
1 < NaN
false

Der Wert »-0« gilt nicht als kleiner als »+0«.

Auswertung
-0 < +0
false

Der Wert »Infinity« ist niemals kleiner als ein anderer Wert.

Auswertung
Infinity < 2
false

Jeder andere Wert ist kleiner als »Infinity«.

Auswertung
2 < Infinity
true

Kein Wert ist kleiner als »-Infinity«

Auswertung
2 < -Infinity
false

»-Infinity« ist kleiner als jeder andere Wert.

Auswertung
-Infinity < 2
true

Übungsfragen

?   Übungsfrage

Können Sie die Werte der folgenden Ausdrücke vorhersagen?

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723934 stefan_ram:723934 Weitere Vergleiche in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723934, slrprddef723934, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/weitere_vergleiche_javascript