Operatoren
Ziele
- Du kennst den Unterschied zwischen Vergleichs-Operatoren und logischen Operatoren.
- Du kennst spezielle Operatoren wie
!!,??,??=und kannst diese anwenden.
Vergleiches und logische Operatoren
Vergleichsoperatoren (comparison operators)
Vergleichsoperatoren werden verwendet, um den Wert zweier Variablen oder Ausdrücke miteinander zu vergleichen. Es existieren die folgenden Vergleichsoperatoren:
- Gleichheit (
==) - Ungleichheit (
!=) - Strikte Gleichheit (
===) - Strikte Ungleichheit (
!==) - Grösser als (
>) - Kleiner als (
<) - Grösser-Gleich (
>=) - Kleiner-Gleich (
<=)
| |
Unterschiede von Gleichheit und strikter Gleichheit
- Das doppelte Gleichheitszeichen
==führt einen “schwachen” Vergleich durch. Das bedeutet konkret, dass JavaScript bei der Verwendung des doppelten Gleichheitszeichens versucht, den Wert beider Operanden zu vergleichen, indem es sie in einen gemeinsamen Typen konvertiert. Wenn die Operanden unterschiedliche Datentypen haben, führt JavaScript implizite Typumwandlungen durch, um sie zu vergleichen. - Das dreifache Gleichheitszeichen
===führt einen “starken” Vergleich durch. Das bedeutet konkret, dass JavaScript bei der Verwendung des dreifachen Gleichheitszeichens nicht nur den Wert der Operanden vergleicht, sondern auch ihren Datentyp im Vergleich berücksichtigt. Sollten die Operanden unterschiedliche Datentypen haben, wird als Ergebnis eines Vergleichs mit dem dreifachen Gleichheitszeichen immerfalseresultieren.
Hier sind einige Beispiele, die den Unterschied zwischen == und === genauer veranschaulichen:
| |
Logische Operatoren (logical operators)
Logische Operatoren werden verwendet, um mehrere Bedingungen miteinander zu kombinieren und Ausdrücke zu evaluieren. Hierbei gibt es folgende Operatoren:
- Bitwise AND (
&) - AND (
&&) - Bitwise OR (
|) - OR (
||) - NOT (
!)
Bitwise AND
Der bitwise AND-Operator vergleicht jedes Bit in den beiden Operanden und gibt für jede Bitposition im Ergebnis eine 1 zurück, wenn sowohl der linke als auch der rechte Operand an dieser Bitposition eine 1 haben. Wenn der linke oder der rechte Operand eine 0 an dieser Bitposition hat, gibt der bitweise AND-Operator auch eine 0 zurück.
Beispiel:
| |
AND (logisches AND)
Der AND-Operator wird verwendet, um zu überprüfen, ob alle Operanden, auf die er angewandt wird, true sind. Wenn ja, gibt er den Wert true zurück, andernfalls gibt er false zurück. Der Operator wird häufig in Bedingungen verwendet, um zu überprüfen, ob mehrere Bedingungen erfüllt sind, bevor eine Aktion ausgeführt wird.
Beispiel:
| |
Bitwise OR
Der bitweise OR-Operator vergleicht jedes Bit innerhalb der beiden Operanden und gibt für jede Bitposition im Ergebnis eine 1 zurück, wenn entweder der linke oder der rechte Operand oder beide Operanden an dieser Bitposition eine 1 haben. Wenn sowohl der linke als auch der rechte Operand an dieser Bitposition eine 0 haben, gibt der bitweise OR-Operator eine 0 zurück.
Beispiel:
| |
OR (logisches OR)
Der OR-Operator wird verwendet, um zu überprüfen, ob mindestens einer der Operanden, auf die er angewendet wird, wahr ist. Wenn ja, gibt er den Wert true zurück, andernfalls gibt er false zurück. Der Operator wird häufig in Bedingungen verwendet, um alternative Bedingungen zu überprüfen und eine Aktion auszuführen, wenn mindestens eine der Bedingungen erfüllt ist.
Beispiel:
| |
NOT (logisches NOT)
Der NOT-Operator wird verwendet, um einen booleschen Wert umzukehren, was heisst, dass true zu false und false zu true wird. Wenn ein Operand true ist, gibt der Operator false zurück, und wenn der Operand false ist, gibt er true zurück. Der Operator wird häufig in Bedingungen verwendet, um die Aussage einer Bedingung umzukehren.
Beispiel:
| |
Special Operators
doppeltes NOT (!!)
Der doppelte NOT-Operator wird verwendet, um einen Wert in einen booleschen Wert umzuwandeln. Die erste Negation kehrt den Wert um und die zweite Negation kehrt ihn wieder zurück, sodass der resultierende Wert immer ein boolescher Ausdruck ist. War der ursprüngliche Wert truthy, so wird das Ergebnis true sein, andernfalls false. Der doppelte Negationsoperator wird häufig verwendet, um sicherzustellen, dass ein Wert wirklich einem booleschen Ausdruck entspricht.
| |
Logischer OR Assignment Operator (||=)
Der Operator ||= prüft, ob die linke Seite des Operators falsy ist. Wenn die linke Seite falsy ist, wird der rechte Operand ausgewertet und der Wert diesem zugewiesen. Wenn die linke Seite truthy ist, wird der linke Wert beibehalten und kein weiterer Ausdruck ausgewertet.
Beispiel:
| |
Logischer AND Assignment Operator (&&=)
Der Operator &&= prüft, ob die linke Seite des Operators truthy ist. Wenn die linke Seite truthy ist, wird der rechte Operand ausgewertet und der Wert diesem zugewiesen. Wenn die linke Seite falsy ist, wird der linke Wert beibehalten und kein weiterer Ausdruck ausgewertet.
Beispiel:
| |
nullish coalescing Assignment Operator (??=)
Der Operator ??= prüft, ob die linke Seite des Operators null oder undefined ist. Wenn die linke Seite null oder undefined ist, wird der rechte Operand ausgewertet und der Wert diesem zugewiesen. Wenn die linke Seite einen anderen falsy Wert als null oder undefined hat, wird der linke Wert beibehalten und kein weiterer Ausdruck ausgewertet.
Beispiel:
| |
nullish coalescing Operator (??)
Der Operator ?? gibt den linken Ausdruck zurück, wenn er null oder undefined ergibt, andernfalls gibt er den rechten Ausdruck zurück. Im Gegensatz zum logischen OR-Operator (||) behandelt der Nullish Coalescing-Operator nur null und undefined als falsy Werte, und alle anderen Werte werden als truthy behandelt.
Beispiel:
| |
ternary Operator (?:)
Der Ternary-Operator (?:) ermöglicht es, eine Zuweisung kombiniert mit einer Bedingung (if/else) auf eine einzige Anweisung zu reduzieren.
Schauen wir uns hierfür folgendes Beispiel an, für das eine if/else-Struktur umgesetzt wird:
| |
Hier haben wir 6 Zeilen Code gebraucht, um bedingt eine Variable zu setzen. Mit dem ternary-Operator können wir das Ganze auf eine Zeile reduzieren (und wir können direkt das Ergebnis per const zuweisen):
| |
Oft wird diese Syntax bei Zuweisungen verwendet, kann aber auch anderorts verwendet werden, beispielsweise für Parameter:
Beispiel:
| |
Ganz allgemein lautet die Syntax:
| |
Zuerst wird die Bedingung (condition) ausgewertet. Wenn diese true entspricht, wird expression1 ausgeführt und zurückgegeben, andernfalls expression2.