Vergleichsoperatoren in JavaScript
Nach der Behandlung des Kleiner-Operators »<« werden in dieser Lektion hier nun noch die ähnlichen Operatoren »>«, »<=« und »>=« vorgestellt.
Aussprache von Vergleichsausdrücken
»x < y« kann als „x ist kleiner[ als] y“ gesprochen werden.
»x > y« kann als „x ist größer[ als] y“ gesprochen werden.
»x <= y« kann als „x ist kleiner oder gleich y“ oder „x ist kleiner-gleich y“ gesprochen werden.
»x >= y« kann als „x ist größer oder gleich y“ oder „x ist kleiner-gleich y“ gesprochen werden.
Die hier gegebene Aussprache liefert auch schon einen Hinweis auf die weiter unten gegebenen Bedeutungen der genannten Operatoren.
Einführende Beispiele
Falls beide Operandenwerte numerisch sind, so besagt der Operator »>«, daß der erste Wert größer ist (auf dem Zahlenstrahl nach dem zweiten kommt).
- Auswertungen
3 > 2
true
Der Operator »<=« besagt, daß der erste Wert kleiner als der zweite oder ihm gleich ist.
- Auswertung
2 <= 3
true
- Auswertung
3 <= 3
true
Der Operator »>=« besagt, daß der erste Wert größer als der Zweite oder ihm gleich ist.
- Auswertung
2 >= 3
false
- Auswertung
3 >= 3
true
Die Syntax von Vergleichsausdrücken
Das folgende Syntaxdiagramm zeigt den Aufbau von Vergleichsausdrücken. Die darin vorkommenden Operatoren »<« und »in« wurden schon früher behandelt.
- Syntaxdiagramm (vereinfacht)
Ausdruck
.----------. .-. .----------.
---.--->| Ausdruck |--->( < )---->| Ausdruck |---.--->
| '----------' '-' '----------' |
| |
| .----------. .-. .----------. |
'--->| Ausdruck |--->( > )---->| Ausdruck |---'
| '----------' '-' '----------' |
| |
| .----------. .--. .----------. |
'--->| Ausdruck |--->( <= )--->| Ausdruck |---'
| '----------' '--' '----------' |
| |
| .----------. .--. .----------. |
'--->| Ausdruck |--->( >= )--->| Ausdruck |---'
| '----------' '--' '----------' |
| |
| .----------. .--. .----------. |
'--->| Ausdruck |--->( in )--->| Ausdruck |---'
'----------' '--' '----------'
Die Assoziativitätsrichtung der Vergleichsoperatoren
Die Vergleichsoperatoren sind linksassoziativ. »1<2<3« bedeutet also »(1<2)<3«.
Die Priorität der Vergleichsoperatoren
Die Vergleichsoperatoren haben eine Priorität, die etwas schwächer als die der additiven binären Operator wie »+« oder »-«. »1+2<3« bedeutet also »(1+2)<3«.
- 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 Gleichartigkeit, Ungleichartigkeit, Gleichheit, Ungleichheit
Die Semantik der Vergleichsoperatoren
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).
Der Operator »>«
Der Wert von »x>y« ist gleich dem Wert von »y<x«.
Genauer: Zur Auswertung des Ausdrucks »E >F « mit den beiden Ausdrücken »E « und »F « wird zunächst »E « und dann »F « ausgewertet. Wenn dann »e « der Wert der Auswertung von »E « und »f « der Wert der Auswertung von »F « ist, dann ist der Wert von »E >F « gleich dem Wert der Inkarnation »f <e «.
Der Operator »<=«
Der Wert von »x<=y« ist gleich dem Wert von »!(x>y)«.
Genauer: Zur Auswertung des Ausdrucks »E >F « mit den beiden Ausdrücken »E « und »F « wird zunächst »E « und dann »F « ausgewertet. Wenn dann »e « der Wert der Auswertung von »E « und »f « der Wert der Auswertung von »F « ist, dann ist der Wert von »E >F « gleich der Verneinung des Wertes der Inkarnation »f >e «.
Der Operator »>=«
Der Wert von »x>=y« ist gleich gleich dem Wert von »!(x<y)«.
Ein Ausnahme von dieser Regel stellen Vergleich mit »NaN« oder »undefined« dar, bei denen sich stets »false« ergibt.
Genauer: Zur Auswertung des Ausdrucks »E >F « mit den beiden Ausdrücken »E « und »F « wird zunächst »E « und dann »F « ausgewertet. Wenn dann »e « der Wert der Auswertung von »E « und »f « der Wert der Auswertung von »F « ist, dann ist der Wert von »E >F « gleich der Verneinung des Wertes der Inkarnation »f <e «.
Übungsfragen
? Übungsfrage
Welchen Wert hat der Ausdruck »3>2>1«?
Bei dieser Übungsfrage soll der Wert einer Auswertung des Ausdrucks vorhergesagt werden, ohne den Wert von einer ECMAScript -Implementation ermitteln zu lassen.
? Übungsfrage
Was ist die mit einem einzigen Operator ausgedrückte Verneinung des Ausdrucks »x<y«?
Quellen *
ECMAScript 2017: 12.10 Relational Operators
Syntax *
Das folgende Syntaxdiagramm zeigt eine genauere Darstellung der Syntax, die schon die Priorität und Assoziativitätsrichtung enthält.
- Syntaxdiagramm *
Vergleichsausdruck
.-----------------.
---.--------------------->| Additivausdruck |---------------------.--->
| '-----------------' |
| |
| .--------------------. .-. .-----------------. |
'--->| Vergleichsausdruck |--->( < )---->| Additivausdruck |---'
| '--------------------' '-' '-----------------' |
| |
| .--------------------. .-. .-----------------. |
'--->| Vergleichsausdruck |--->( > )---->| Additivausdruck |---'
| '--------------------' '-' '-----------------' |
| |
| .--------------------. .--. .-----------------. |
'--->| Vergleichsausdruck |--->( <= )--->| Additivausdruck |---'
| '--------------------' '--' '-----------------' |
| |
| .--------------------. .--. .-----------------. |
'--->| Vergleichsausdruck |--->( >= )--->| Additivausdruck |---'
| '--------------------' '--' '-----------------' |
| |
| .--------------------. .--. .-----------------. |
'--->| Vergleichsausdruck |--->( in )--->| Additivausdruck |---'
'--------------------' '--' '-----------------'