Vergleichsoperatoren

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?

===
==
=
!=