Vergleichsoperatoren vergleichen die Werte von zwei Operanden und prüfen, ob die daraus gebildete Aussage true oder false ist. Im folgenden Beispiel wird der Operator strenge Gleichheit (===) verwendet, um zwei Operanden zu vergleichen: den Ausdruck 2 + 2 und den Wert 4. Da das Ergebnis des Ausdrucks mit dem Zahlenwert 4 übereinstimmt, wird dieser Ausdruck zu true ausgewertet:
2 + 2 === 4
> true
Typumwandlung und Gleichheit
Zwei der am häufigsten verwendeten Vergleichsoperatoren sind == für die ungefähre Gleichheit und === für die strikte Gleichheit. == führt einen ungefähren Vergleich zwischen zwei Werten durch, indem die Operanden nach Möglichkeit zu übereinstimmenden Datentypen erzwungen werden. So wird beispielsweise mit 2 == "2" true zurückgegeben, obwohl ein Vergleich zwischen einem Zahlenwert und einem Stringwert durchgeführt wird.
2 == 2
> true
2 == "2"
> true
Dasselbe gilt für !=, das nur dann true zurückgibt, wenn die verglichenen Operanden nicht ungefähr gleich sind.
2 != 3
> true
2 != "2"
> false
Bei strengen Vergleichen mit === oder !== wird keine Typumwandlung durchgeführt. Damit ein strenger Vergleich zu true führt, müssen die verglichenen Werte denselben Datentyp haben. Daher gibt 2 == "2" true zurück, 2 === "2" jedoch false:
2 === 3
> false
2 === "2"
> false
Verwenden Sie nach Möglichkeit ===, um Unklarheiten zu vermeiden, die durch die automatische Umwandlung entstehen können.
| Operator | Beschreibung | Nutzung | Ergebnis |
|---|---|---|---|
| === | Genau gleich | 2 === 2 | wahr |
| !== | Nicht genau gleich | 2 != "2" | wahr |
| == | Ist gleich (oder „ungefähr gleich“) | 2 == "2" | wahr |
| != | Ungleich | 2 != "3" | wahr |
| > | Größer als | 3 > 2 | wahr |
| >= | Größer als oder gleich | 2 >= 2 | wahr |
| < | Weniger als | 2 < 3 | wahr |
| <= | Kleiner als oder gleich | 2 <= 3 | wahr |
Truthy und Falsy
Alle Werte in JavaScript sind implizit true oder false und können zum entsprechenden booleschen Wert gezwungen werden, z. B. mit dem Vergleichsoperator „ungefähr gleich“. Eine begrenzte Anzahl von Werten wird auf false festgelegt:
0nullundefinedNaN- Leerer String (
"")
Alle anderen Werte werden in true umgewandelt, einschließlich Strings mit einem oder mehreren Zeichen und allen nicht nullwertigen Zahlen. Diese werden häufig als „wahr“ und „falsch“ bezeichnet.
"My string" == true
> true
100 == true
> true
0 == true
> false
Logische Operatoren
Mit den logischen Operatoren AND (&&), OR (||) und NOT (!) können Sie den Ablauf eines Scripts basierend auf der Auswertung von zwei oder mehr bedingten Anweisungen steuern:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Ein logischer NOT-Ausdruck (!) negiert den Wahrheits- oder Falschwert eines Operanden. Er ergibt true, wenn der Operand false ergibt, und false, wenn der Operand true ergibt:
true
> true
!true
> false
!false
> true
Wenn Sie den logischen NOT-Operator (!) vor einem anderen Datentyp wie einer Zahl oder einem String verwenden, wird dieser Wert in einen booleschen Wert umgewandelt und der Wahrheitsgehalt des Ergebnisses umgekehrt.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Es ist üblich, zwei NOT-Operatoren zu verwenden, um Daten schnell in den entsprechenden booleschen Wert zu zwingen:
!!"string"
> true
!!0
> false
Die logischen Operatoren AND und OR führen keine Erzwingung aus. Sie geben den Wert eines der beiden ausgewerteten Operanden zurück. Der ausgewählte Operand wird durch diese Auswertung bestimmt.
Der logische AND-Operator (&&) gibt nur den ersten der beiden Operanden zurück, wenn dieser Operand zu false ausgewertet wird. Andernfalls wird der zweite Operand zurückgegeben. Bei Vergleichen, die zu booleschen Werten führen, wird true nur zurückgegeben, wenn die Operanden auf beiden Seiten des logischen AND-Operators zu true ausgewertet werden. Wenn eine Seite als false ausgewertet wird, wird false zurückgegeben.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Wenn && mit zwei nicht booleschen Operanden verwendet wird, wird der erste Operand unverändert zurückgegeben, wenn er in false umgewandelt werden kann. Wenn der erste Operand in true umgewandelt werden kann, wird der zweite Operand unverändert zurückgegeben:
false && "My string"
> false
null && "My string"
> null
"My string" && false
> false
"My string" && "My second string"
> "My second string"
2 === 2 && "My string"
> "My string"
Der logische OR-Operator (||) gibt nur den ersten der beiden Operanden zurück, wenn dieser Operand zu true ausgewertet wird. Andernfalls wird der zweite Operand zurückgegeben. Bei Vergleichen, die zu booleschen Werten führen, wird true zurückgegeben, wenn einer der Operanden zu true ausgewertet wird. Wenn keine der Seiten zu true ausgewertet wird, wird false zurückgegeben:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Wenn Sie || mit zwei nicht booleschen Operanden verwenden, wird der erste Operand unverändert zurückgegeben, wenn er in true umgewandelt werden kann. Wenn der erste Operand in false umgewandelt werden kann, wird der zweite Operand unverändert zurückgegeben:
false || "My string"
> "My string"
null || "My string"
> "My string"
"My string" || false
> "My string"
"My string" || "My second string"
> "My string"
2 === 2 || "My string"
> true
Null-Coalescing-Operator
Der in ES2020 eingeführte Operator „Null Coalescing“ (??) gibt den ersten Operanden nur zurück, wenn dieser Operand einen anderen Wert als null oder undefined hat. Andernfalls wird der zweite Operand zurückgegeben.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
?? ähnelt einem logischen ODER, ist aber bei der Auswertung des ersten Operanden strenger. || gibt den zweiten Operanden für jeden Ausdruck zurück, der in false umgewandelt werden kann, einschließlich undefined und null. ?? gibt nur dann den zweiten Operanden zurück, wenn der erste Operand genau null oder undefined ist, auch wenn er zu false umgewandelt werden könnte:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Logische Zuweisungsoperatoren
Mit Zuweisungsoperatoren können Sie dem ersten Operator den Wert eines zweiten Operators zuweisen. Das häufigste Beispiel hierfür ist ein einzelnes Gleichheitszeichen (=), mit dem einer deklarierten Variablen ein Wert zugewiesen wird.
Mit logischen Zuweisungsoperatoren können Sie einer Variablen bedingt einen Wert zuweisen, der vom Wahrheitswert dieser Variablen abhängt.
Der logische AND-Zuweisungsoperator (&&=) wertet den zweiten Operanden aus und weist ihn dem ersten Operanden zu, wenn dieser den Wert true ergibt. Das entspricht dem Ausdruck „Wenn der erste Operand wahr ist, weisen Sie ihm stattdessen den Wert des zweiten Operanden zu.“
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Ob eine Zuweisung ausgeführt wird, hängt davon ab, ob der erste Operand wahr oder falsch ist. Wenn Sie jedoch versuchen, den ersten Operanden mit einem Vergleichsoperator zu bewerten, erhalten Sie den booleschen Wert true oder false, dem kein Wert zugewiesen werden kann:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
Der logische OR-Zuweisungsoperator (||=) wertet den zweiten Operanden aus und weist ihn dem ersten Operanden zu, wenn der erste Operand zu false ausgewertet wird. Das entspricht dem Ausdruck „Wenn der erste Operand falsch ist, weisen Sie ihm stattdessen den Wert des zweiten Operanden zu.“
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Wissen testen
Welcher Operator gibt „genau gleich“ an?
======!=