if...else

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die if...else-Anweisung führt eine Anweisung aus, wenn eine angegebene Bedingung truthy ist. Wenn die Bedingung falsy ist, wird eine andere Anweisung im optionalen else-Zweig ausgeführt.

Probieren Sie es aus

Syntax

js
if (condition)
  statement1

// With an else clause
if (condition)
  statement1
else
  statement2
condition

Ein Ausdruck, der als truthy oder falsy betrachtet wird.

statement1

Anweisung, die ausgeführt wird, wenn condition truthy ist. Kann jede Anweisung sein, einschließlich weiter geschachtelter if-Anweisungen. Um mehrere Anweisungen auszuführen, verwenden Sie eine Block-Anweisung ({ /* ... */ }), um diese Anweisungen zu gruppieren. Um keine Anweisungen auszuführen, verwenden Sie eine leere Anweisung.

statement2

Anweisung, die ausgeführt wird, wenn condition falsy ist und der else-Zweig existiert. Kann jede Anweisung sein, einschließlich Blockanweisungen und weiter geschachtelter if-Anweisungen.

Beschreibung

Mehrere if...else-Anweisungen können verschachtelt werden, um einen else if-Zweig zu erstellen. Beachten Sie, dass es in JavaScript kein elseif-Schlüsselwort gibt (in einem Wort).

js
if (condition1)
  statement1
else if (condition2)
  statement2
else if (condition3)
  statement3
// …
else
  statementN

Um zu sehen, wie dies funktioniert, sieht es bei richtiger Einrückung der Verschachtelung so aus:

js
if (condition1)
  statement1
else
  if (condition2)
    statement2
  else
    if (condition3)
      statement3
// …

Um mehrere Anweisungen innerhalb eines Zweigs auszuführen, verwenden Sie eine Blockanweisung ({ /* ... */ }), um diese Anweisungen zu gruppieren.

js
if (condition) {
  statements1
} else {
  statements2
}

Das Nichtverwenden von Blöcken kann zu verwirrendem Verhalten führen, insbesondere wenn der Code manuell formatiert wird. Zum Beispiel:

js
function checkValue(a, b) {
  if (a === 1)
    if (b === 2)
      console.log("a is 1 and b is 2");
  else
    console.log("a is not 1");
}

Dieser Code sieht harmlos aus — jedoch wird beim Ausführen von checkValue(1, 3) "a is not 1" protokolliert. Dies liegt daran, dass im Fall von dangling else der else-Zweig mit dem nächstgelegenen if-Zweig verbunden wird. Daher würde der obige Code bei richtiger Einrückung so aussehen:

js
function checkValue(a, b) {
  if (a === 1)
    if (b === 2)
      console.log("a is 1 and b is 2");
    else
      console.log("a is not 1");
}

Im Allgemeinen ist es eine gute Praxis, immer Blockanweisungen zu verwenden, insbesondere bei Code, der verschachtelte if-Anweisungen enthält.

js
function checkValue(a, b) {
  if (a === 1) {
    if (b === 2) {
      console.log("a is 1 and b is 2");
    }
  } else {
    console.log("a is not 1");
  }
}

Verwechseln Sie nicht die primitiven Boolean-Werte true und false mit der Wahrhaftigkeit oder Falschhaftigkeit des Boolean-Objekts. Jeder Wert, der nicht false, undefined, null, 0, -0, NaN oder der leere String ("") ist, und jedes Objekt, einschließlich eines Boolean-Objekts, dessen Wert false ist, wird als truthy betrachtet, wenn er als Bedingung verwendet wird. Zum Beispiel:

js
const b = new Boolean(false);
if (b) {
  console.log("b is truthy"); // "b is truthy"
}

Beispiele

Verwendung von if...else

js
if (cipherChar === fromChar) {
  result += toChar;
  x++;
} else {
  result += clearChar;
}

Verwendung von else if

Beachten Sie, dass es keine elseif-Syntax in JavaScript gibt. Sie können jedoch else und if mit einem Leerzeichen dazwischen schreiben:

js
if (x > 50) {
  /* do something */
} else if (x > 5) {
  /* do something */
} else {
  /* do something */
}

Verwendung einer Zuweisung als Bedingung

Sie sollten fast niemals ein if...else mit einer Zuweisung wie x = y als Bedingung haben:

js
if ((x = y)) {
  // …
}

Denn im Gegensatz zu while-Schleifen wird die Bedingung nur einmal ausgewertet, sodass die Zuweisung nur einmal durchgeführt wird. Der obige Code ist gleichbedeutend mit:

js
x = y;
if (x) {
  // …
}

Was viel klarer ist. In dem seltenen Fall, dass Sie so etwas tun möchten, hat die while-Dokumentation einen Abschnitt Verwendung einer Zuweisung als Bedingung mit unseren Empfehlungen.

Spezifikationen

Specification
ECMAScript Language Specification
# sec-if-statement

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch