5 Min

Die Kurzform der if-else-Anweisung in JavaScript wird als ternärer Operator bezeichnet. Er ist wie folgt aufgebaut:

Bedingung ? AusdruckWennWahr : AusdruckWennFalsch;

Erklärung:

  • Bedingung: Dies ist die Bedingung, die Sie auswerten möchten (genau wie in einer normalen if-Anweisung).
  • ?: Trennt die Bedingung von den Ausdrücken.
  • AusdruckWennWahr: Dieser Ausdruck wird ausgeführt, wenn die Bedingung wahr ist.
  • :: Trennt die Ausdrücke wahr und falsch.
  • AusdruckWennFalsch: Dieser Ausdruck wird ausgeführt, wenn die Bedingung falsch ist.

Beispiel:

let age = 18;
let message = age >= 18 ? 'Sie sind erwachsen.' : 'Sie sind minderjährig.';
console.log(message); // Ausgabe: „Sie sind erwachsen.“

In diesem Beispiel:

  • Wenn age >= 18 true ist, lautet der Wert von message „Sie sind erwachsen.“
  • Wenn age >= 18 false ist, lautet der Wert von message „Sie sind minderjährig.“

Fallstricke:

  • Lesbarkeit: Ternäre Operatoren sind großartig für einfache Bedingungen, aber bei komplexerer Logik oder verschachtelten Bedingungen können sie Ihren Code schwer lesbar machen. Für komplexe Logik ist es normalerweise besser, vollständige if-else-Blöcke zu verwenden.

  • Übermäßigen Gebrauch vermeiden: Zu viele ternäre Operatoren in einer Reihe oder tief verschachtelte ternäre Operatoren können schnell schwer verständlich werden.

Komplexes Beispiel:

let score = 85;
let grade = score >= 90 ? 'A' : score >= 80 ? 'B' : 'C';
console.log(grade); // Ausgabe: "B"

In diesem Fall wertet der verschachtelte ternäre Operator mehrere Bedingungen auf kompakte Weise aus. Aber auch hier gilt: Bei komplexerer Logik sind standardmäßige if-else-Blöcke oft besser lesbar.

If Else ALlgemein

In JavaScript sind if-Abfragen eine Möglichkeit, Entscheidungen im Code zu treffen, indem sie einen Ausdruck auf Wahr oder Falsch prüfen. Die Syntax ist dabei sehr einfach:

Grundlegende Syntax:

if (Bedingung) {
  // Code, der ausgeführt wird, wenn die Bedingung wahr ist
} else {
  // Code, der ausgeführt wird, wenn die Bedingung falsch ist
}

Hier ein Beispiel:

let score = 75;

if (score >= 90) {
  console.log('Note: Sehr gut');
} else if (score >= 75) {
  console.log('Note: Gut');
} else {
  console.log('Note: Verbesserungswürdig');
}

1. Funktionsweise der if-Abfrage

Die if-Abfrage überprüft die angegebene Bedingung. Wenn die Bedingung wahr ist, wird der Code innerhalb des ersten Blocks (if) ausgeführt. Ist sie falsch, wird der else-Block ausgeführt (sofern vorhanden). Es ist auch möglich, mehrere Bedingungen mit else if zu prüfen.

  • Wahrheitswerte: In JavaScript wird alles, was als „wahr“ oder „falsch“ interpretiert werden kann, als truthy oder falsy bezeichnet.
    • Falsy-Werte in JavaScript: false, 0, "" (leere Zeichenkette), null, undefined, NaN.
    • Alle anderen Werte gelten als truthy.

Beispiel mit falsy-Werten:

let value = 0;

if (value) {
  console.log('Wert ist wahr');
} else {
  console.log('Wert ist falsch');
}

Da 0 ein falsy-Wert ist, wird die Ausgabe “Wert ist falsch” sein.

2. Gotchas in JavaScript mit if-Abfragen

Beim Arbeiten mit if-Abfragen in JavaScript gibt es einige Fallstricke, die du im Auge behalten solltest:

2.1. Typenkonversion (Type Coercion)

JavaScript ist eine schwach typisierte Sprache, was bedeutet, dass es versucht, Werte automatisch in einen anderen Typ zu konvertieren, wenn es eine Bedingung überprüft. Dies kann zu unerwarteten Ergebnissen führen.

if (0 == false) {
  console.log('0 ist gleich false');
}

Ergebnis: “0 ist gleich false” wird ausgegeben, weil der Wert 0 zu einem falsy-Wert konvertiert wird, was bei der schwachen Vergleichsoperation (==) zu einem wahren Vergleich führt.

Lösung: Strikter Vergleich mit ===

Verwende den strikten Vergleichsoperator ===, um die Typen nicht automatisch konvertieren zu lassen.

if (0 === false) {
  console.log('Das wird nicht ausgeführt');
} else {
  console.log('0 ist nicht gleich false');
}

Ergebnis: “0 ist nicht gleich false”, da der strikte Vergleich auch den Datentyp berücksichtigt.

2.2. Nicht deklarierte Variablen

In JavaScript kannst du auf nicht deklarierte Variablen zugreifen, was zu einem Fehler führt.

if (myVariable) {
  console.log('Diese Variable existiert');
}

Wenn myVariable nicht deklariert ist, erhältst du einen ReferenceError. Um dies zu vermeiden, solltest du Variablen immer deklarieren oder typeof verwenden, um deren Existenz zu prüfen.

if (typeof myVariable !== 'undefined') {
  console.log('Variable ist deklariert');
}

2.3. Verschachtelte if-Abfragen (Nested Ifs)

Wenn if-Abfragen zu stark verschachtelt werden, kann der Code schwer lesbar und wartbar werden. Dies nennt man „Callback-Hell“ oder „Pyramid of Doom“.

if (a > 5) {
  if (b < 10) {
    if (c === 3) {
      console.log('Komplexer verschachtelter Fall');
    }
  }
}

Lösung: Verwende logische Operatoren

Du kannst solche Verschachtelungen vermeiden, indem du logische Operatoren wie && und || verwendest:

if (a > 5 && b < 10 && c === 3) {
  console.log('Elegantere Lösung');
}

2.4. Das Fehlen eines else-Zweigs

Es gibt Fälle, in denen du nicht berücksichtigst, was passiert, wenn die Bedingung falsch ist, was zu unbeabsichtigten Lücken in der Logik führen kann.

let temperature = 30;

if (temperature > 25) {
  console.log('Es ist heiß');
}
// Keine Handlung, wenn temperature <= 25

Es kann sinnvoll sein, immer einen else-Zweig hinzuzufügen, um unerwartete Szenarien zu behandeln:

if (temperature > 25) {
  console.log('Es ist heiß');
} else {
  console.log('Es ist angenehm oder kühl');
}

2.5. Vorsicht bei leeren Arrays und Objekten

In JavaScript sind leere Arrays und leere Objekte truthy, auch wenn sie „leer“ aussehen.

if ([]) {
  console.log('Ein leeres Array wird als wahr betrachtet');
}

if ({}) {
  console.log('Ein leeres Objekt wird als wahr betrachtet');
}

Dies ist ein häufiges Missverständnis, insbesondere für Entwickler, die von Sprachen kommen, in denen leere Strukturen falsy sein können.

3. Kurzschreibweise mit dem ternären Operator

Der ternäre Operator ist eine Kurzschreibweise für einfache if-Abfragen.

let age = 20;
let access = (age >= 18) ? 'Zugang erlaubt' : 'Zugang verweigert';
console.log(access);

Dies ersetzt eine einfache if-Abfrage durch eine kompaktere und übersichtlichere Lösung, wenn nur eine Bedingung und eine Alternative erforderlich ist.

4. If-Abfrage ohne Klammern

Es ist in JavaScript möglich, eine if-Abfrage ohne geschweifte Klammern {} zu schreiben, wenn sie nur einen einzelnen Befehl enthält. Das kann aber zu schwer lesbarem und fehleranfälligem Code führen:

if (age >= 18) console.log('Zugang erlaubt');

Best Practice: Immer Klammern verwenden

Um Missverständnisse und Wartungsprobleme zu vermeiden, ist es eine gute Praxis, immer Klammern zu verwenden, auch bei einzeiligen Anweisungen:

if (age >= 18) {
  console.log('Zugang erlaubt');
}

Zusammenfassung

  • If-Abfragen ermöglichen Entscheidungslogik in JavaScript.
  • Achte auf Typkonvertierungen und verwende strikten Vergleich (===).
  • Vermeide zu tiefe Verschachtelungen, indem du logische Operatoren verwendest.
  • Sei dir über das Verhalten von truthy und falsy Werten bewusst, insbesondere bei leeren Arrays und Objekten.
  • Nutze den ternären Operator für einfache Bedingungen, aber übertreibe es nicht.

Mit diesen Tipps kannst du sicherstellen, dass deine if-Abfragen in JavaScript korrekt und effizient funktionieren.

Updated: