Operatoren
Ziele
- Du kennst den Unterschied zwischen Vergleichs-Operatoren und logischen Operatoren.
- Du kennst spezielle Operatoren wie
!!
,??
,??=
und kannst diesen anwenden.
Vergleiches und Logische Operatoren
Vergleichsoperatoren (comparison operators)
Vergleichsoperatoren werden verwendet, um den Wert zweier Variablen oder Ausdrücke miteinander zu vergleichen. Es gibt folgende:
- Gleichheit (
==
) - Ungleichheit (
!=
) - Strikte Gleichheit (
===
) - Strikte Ungleichheit (
!==
) - Grösser als (
>
) - Kleiner als (
<
) - Grösser-Gleich (
>=
) - Kleiner-Gleich (
<=
)
|
|
Unterschiede von Gleichheit und strikte Gleichheit
- Das doppelte Gleichheitszeichen
==
führt einen schwachen Vergleich durch. Das bedeutet, dass JavaScript bei der Verwendung des doppelten Gleichheitszeichens versucht, den Wert beider Operanden zu vergleichen, indem es sie in einen gemeinsamen Typ 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, dass JavaScript bei der Verwendung des dreifachen Gleichheitszeichens nicht nur den Wert der Operanden vergleicht, sondern auch ihren Datentyp berücksichtigt. Wenn die Operanden unterschiedliche Datentypen haben, gibt der dreifachen Gleichheitszeichen immerfalse
zurück.
Hier sind einige Beispiele, die den Unterschied zwischen ==
und `=== veranschaulichen:
|
|
Logische Operatoren (logical operators)
Logische Operatoren werden verwendet, um mehrere Bedingungen zu kombinieren und Ausdrücke zu evaluieren. Hier gibt es folgende:
- Bitwise AND (
&
) - AND (
&&
) - Bitwise OR (
|
) - OR (
||
) - NOT (
!
)
Bitwise AND
Der bitweise 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 entweder der linke oder der rechte Operand eine 0 an dieser Bitposition hat, gibt der bitweise AND-Operator eine 0 zurück.
Beispiel:
|
|
AND (logisches AND)
Der Operator wird verwendet, um zu überprüfen, ob alle Operanden, auf die er angewendet wird, wahr 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 in den 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 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 Operator wird verwendet, um einen booleschen Wert umzukehren, dh. aus “true” wird “false” und aus “false” wird “true”. 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 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, so dass der resultierende Wert immer ein boolescher Wert ist. Wenn der ursprüngliche Wert truthy, wird das Ergebnis true sein, andernfalls false. Der doppelte Negationsoperator wird häufig verwendet, um sicherzustellen, dass ein Wert wirklich einen booleschen Wert hat.
|
|
Logische 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:
|
|
Logische 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, das ansonsten mit einem if
/else
geschrieben wird, an:
|
|
Hier haben wir 6 Zeilen Code gebraucht, um eine Variable zu setzen. Mit dem ternary-Operator geht das in einer (und wir können direkt const
verwenden):
|
|
Oft wird diese Syntax bei Zuweisungen verwendet, kann aber auch sonst verwendet werden, z.B. für Parameter:
Beispiel:
|
|
Ganz allgemein lautet die Syntax:
|
|
Zuerst wird die Bedingung (condition) ausgewertet. Wenn diese true
ist, wird expression1
ausgeführt und zurückgegeben, andernfalls expression2
.