Vergleichsoperator

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?

===
==
=
!=