Vergleichsoperatoren vergleichen die Werte zweier Operanden und bewerten, ob die von ihnen formulierte Anweisung true
oder false
ist. Im folgenden Beispiel wird der strikte Gleichheitsoperator (===
) verwendet, um zwei Operanden zu vergleichen: den Ausdruck 2 + 2
und den Wert 4
. Da das Ergebnis des Ausdrucks und der Zahlenwert 4
identisch sind, wird dieser Ausdruck als true
ausgewertet:
2 + 2 === 4
> true
Typzwang und Gleichheit
Zwei der am häufigsten verwendeten Vergleichsoperatoren sind ==
für lockere Gleichheit und ===
für strikte Gleichheit. ==
führt einen lockeren Vergleich zwischen zwei Werten durch. Dabei werden die Operanden nach Möglichkeit in übereinstimmende Datentypen gezwungen. 2 == "2"
gibt beispielsweise true
zurück, obwohl ein Vergleich zwischen einem Zahlenwert und einem Stringwert durchgeführt wird.
2 == 2
> true
2 == "2"
> true
Dasselbe gilt für !=
, das true
nur dann zurückgibt, wenn die zu vergleichenden Operanden nicht locker gleich sind.
2 != 3
> true
2 != "2"
> false
Strenge Vergleiche mit ===
oder !==
führen keine Typerzwingung durch. Damit ein strikter Vergleich mit true
ausgewertet werden kann, müssen die verglichenen Werte denselben Datentyp haben. Aus diesem Grund gibt 2 == "2"
true
zurück, während 2 === "2"
false
zurückgibt:
2 === 3
> false
2 === "2"
> false
Verwenden Sie nach Möglichkeit ===
, um Mehrdeutigkeiten zu beseitigen, die durch das automatische Erzwingen entstehen können.
Operator | Beschreibung | Nutzung | Ergebnis |
---|---|---|---|
=== | Streng gleich | 2 === 2 | true |
!== | Nicht genau gleich | 2 !== "2" | true |
== | Gleich (oder „Lose gleich“) | 2 == "2" | true |
!= | Ungleich | 2 != "3" | true |
> | Größer als | 3 > 2 | true |
>= | Größer als oder gleich | 2 >= 2 | true |
< | Weniger als | 2 < 3 | true |
<= | Kleiner als oder gleich | 2 <= 3 | true |
Wahrhaft und fälschlich
Alle Werte in JavaScript sind implizit true
oder false
und können in den entsprechenden booleschen Wert umgewandelt werden, z. B. mit dem Vergleichsoperator „Losely“. Eine begrenzte Gruppe von Werten wird in false
umgewandelt:
0
null
undefined
NaN
- Leerer String (
""
)
Alle anderen Werte werden zu true
umgewandelt, einschließlich eines Strings mit einem oder mehreren Zeichen und allen Zahlen ungleich null. Diese werden allgemein als „wahrheitsgemäße“
und „falsche“ Werte bezeichnet.
"My string" == true
> true
100 == true
> true
0 == true
> false
Logische Operatoren
Verwenden Sie die logischen Operatoren UND (&&
), ODER (||
) und NICHT (!
), um den Ablauf eines Skripts basierend auf der Auswertung von zwei oder mehr bedingten Anweisungen zu steuern:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Ein logischer NICHT-Ausdruck (!
) negiert den wahren oder falschen Wert eines Operanden und ergibt true
, wenn der Operand false
ist, und false
, wenn der Operand true
ergibt:
true
> true
!true
> false
!false
> true
Wenn Sie den logischen NICHT-Operator (!
) vor einem anderen Datentyp wie einer Zahl oder einem String verwenden, wird dieser Wert in einen booleschen Wert umgewandelt und der wahre oder falsche Wert des Ergebnisses umgekehrt.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Es ist üblich, zwei NOT-Operatoren zu verwenden, um Daten schnell auf einen übereinstimmenden booleschen Wert zu erzwingen:
!!"string"
> true
!!0
> false
Die logischen UND- und ODER-Operatoren führen selbst keine Erzwingung aus. Sie geben den Wert von einem der beiden ausgewerteten Operanden zurück, wobei der ausgewählte Operand durch diese Auswertung bestimmt wird.
Das logische UND (&&
) gibt den ersten Operanden nur dann zurück, wenn dieser Operand false
ergibt, andernfalls den zweiten Operanden. Bei Vergleichen, die als boolesche Werte ausgewertet werden, wird true
nur dann zurückgegeben, wenn die Operanden auf beiden Seiten des logischen UNDs true
ergeben. Wenn eine Seite false
ergibt, 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 zu false
erzwungen 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"
Das logische ODER (||
) gibt den ersten der beiden Operanden nur dann zurück, wenn dieser Operand true
ergibt, andernfalls den zweiten Operanden. Bei Vergleichen, die mit booleschen Werten ausgewertet werden, bedeutet dies, dass true
zurückgegeben wird, wenn einer der Operanden als true
ausgewertet wird. Wenn keine der beiden Seiten true
ergibt, wird false
zurückgegeben:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Wenn ||
mit zwei nicht booleschen Operanden verwendet wird, wird der erste Operand unverändert zurückgegeben, wenn er zu true
erzwungen werden konnte. 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
Nullish-Zusammenführungsoperator
Der in ES2020 eingeführte „Nullish-Coalescing-Operator“ (??
) gibt den ersten Operanden nur dann 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, jedoch strenger bei der Auswertung des ersten Operanden. ||
gibt den zweiten Operanden für jeden Ausdruck zurück, der in false
umgewandelt werden kann, einschließlich undefined
und null
. ??
gibt den zweiten Operanden zurück, wenn der erste Operand ein beliebiger Wert als null
oder undefined
ist, auch wenn er zu false
erzwungen werden könnte:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Operatoren für logische Zuweisung
Mit Zuweisungsoperatoren können Sie einem ersten Operator den Wert eines zweiten Operators zuweisen. Das gängigste Beispiel ist ein einzelnes Gleichheitszeichen (=
), mit dem einer deklarierten Variablen ein Wert zugewiesen wird.
Mit logischen Zuweisungsoperatoren können Sie einer Variablen basierend auf dem Wahrheits- oder Falschwert dieser Variablen bedingt einen Wert zuweisen.
Der Operator für die logische UND-Zuweisung (&&=
) wertet den zweiten Operanden aus und weist ihn dem ersten Operanden zu, wenn der erste Operand nur dann als true
ausgewertet werden würde. d. h., 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
Der Wahrheits- oder Falschwert des ersten Operanden bestimmt, ob eine Zuweisung ausgeführt wird. Wenn Sie jedoch versuchen, den ersten Operanden mit einem Vergleichsoperator auszuwerten, ergibt sich der boolesche 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 Operator für die Zuweisung des logischen ODER (||=
) wertet den zweiten Operanden aus und weist ihn dem ersten Operanden zu, wenn der erste Operand false
ergibt. Das heißt:"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 „streng gleich“ an?
===
==
=
!=