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:
0
null
undefined
NaN
- 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?
===
==
=
!=