Kurz: Nutze immer = und !. Der lockere Vergleich == führt zu verblüffenden Ergebnissen. Beachte auch: Strings werden Zeichen für Zeichen verglichen (“10” < “9” ist wahr), Zahlen numerisch.
Teil des Kurses JavaScript
Kapitel 6 von 40 im Kurs JavaScript. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.
Vergleiche
| Operator | Bedeutung |
|---|---|
=== | gleich (Wert und Typ) |
!== | ungleich |
< > <= >= | größer/kleiner |
==, != | gleich/ungleich mit Typumwandlung (vermeiden) |
console.log(5 === 5, 5 === "5", 5 == "5");
console.log(0 == false, 0 === false);
console.log(null == undefined, null === undefined);
console.log("a" < "b", "B" < "a", "10" < "9", 10 < 9);Ausgabe:
true false true
true false
true false
true true true falseNutze immer === und !==. Der lockere Vergleich == führt zu verblüffenden Ergebnissen. Beachte auch: Strings werden Zeichen für Zeichen verglichen ("10" < "9" ist wahr), Zahlen numerisch.
Logische Operatoren
| Operator | Name | Ergebnis |
|---|---|---|
&& | und | wahr, wenn beide wahr |
|| | oder | wahr, wenn mindestens einer wahr |
! | nicht | kehrt um |
const alter = 20, hatTicket = true;
console.log(alter >= 18 && hatTicket);
console.log(alter < 18 || hatTicket);
console.log(!hatTicket);Ausgabe:
true
true
falseKurzschluss-Auswertung
&& und || liefern nicht nur true/false, sondern einen der beiden Operanden, und werten den rechten nur bei Bedarf aus:
console.log("Mia" || "Standard"); // links truthy
console.log("" || "Standard"); // links falsy
console.log(0 && "wird nie gezeigt"); // links falsy
console.log(5 && "rechts"); // links truthy
const name = "";
console.log(name || "Gast");Ausgabe:
Mia
Standard
0
rechts
GastNullish Coalescing ?? und Optional Chaining ?.
|| ersetzt jeden falsy Wert, auch 0 und "". ?? ersetzt nur null und undefined:
const punkte = 0;
console.log(punkte || 10); // 10 (oft ungewollt)
console.log(punkte ?? 10); // 0
const nutzer = { name: "Mia" };
console.log(nutzer.adresse?.stadt); // undefined, kein Fehler
console.log(nutzer.adresse?.stadt ?? "unbekannt");Ausgabe:
10
0
undefined
unbekanntMit ?. brichst du den Zugriff ab, sobald ein Wert null oder undefined ist, statt einen Fehler zu werfen.
Ternärer Operator
const alter = 16;
console.log(alter >= 18 ? "volljährig" : "minderjährig");Ausgabe:
minderjährigZuweisungsoperatoren
let x = 10;
x += 5; x -= 3; x *= 2; x /= 4; x **= 2; x %= 7;
console.log(x);
let n = 0;
n++; n++; --n;
console.log(n);
let a = null;
a ??= "neu"; // nur zuweisen, wenn null/undefined
let b = 0;
b ||= 99; // zuweisen, wenn falsy
console.log(a, b);Ausgabe:
1
1
neu 99Rangfolge (Auszug)
Von stark nach schwach: ! und ++, dann **, * / %, + -, Vergleiche, ===, &&, ||, ??, ?:, Zuweisung. Setze im Zweifel Klammern: (a + b) * c.
Bitoperatoren (kurz)
&, |, ^, ~, <<, >> arbeiten auf einzelnen Bits, etwa bei Flags und Masken:
console.log(5 & 3, 5 | 3, 5 ^ 3, 1 << 4, 255 >> 2);Ausgabe:
1 7 6 16 63Merke
- Immer
===und!==verwenden &&,||liefern einen der Operanden (Kurzschluss)??ersetzt nurnull/undefined,||jeden falsy Wert?.verhindert Fehler bei fehlenden Zwischenwertenbedingung ? a : bist die Kurzform von if/else
Übungsaufgabe
Gib mit dem ternären Operator "gerade" oder "ungerade" für eine Zahl aus und setze mit ?? einen Standardwert für eine fehlende Eigenschaft.
Quiz zur Selbstkontrolle
Was ergibt 0 == false?
- true (richtig)
- false
- undefined
- Einen Fehler
Wann liefert a ?? b den Wert b?
- Wenn a null oder undefined ist (richtig)
- Wenn a falsy ist
- Wenn a 0 ist
- Immer
Was ergibt "10" < "9"?
- true (Texte werden zeichenweise verglichen) (richtig)
- false
- NaN
- Einen Fehler
Weiter im Kurs
Zurück: Zahlen und das Math-Objekt
Weiter: Text: Strings
Alle Kapitel: JavaScript im Überblick