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
function testNum(a) {
let result;
if (a > 0) {
result = "positive";
} else {
result = "NOT positive";
}
return result;
}
console.log(testNum(-5));
// Expected output: "NOT positive"
Syntax
if (condition)
statement1
// With an else clause
if (condition)
statement1
else
statement2
condition
-
Ein Ausdruck, der entweder als truthy oder falsy betrachtet wird.
statement1
-
Anweisung, die ausgeführt wird, wenn condition truthy ist. Kann eine beliebige Anweisung sein, einschließlich weiter verschachtelter
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 derelse
Zweig vorhanden ist. Kann eine beliebige Anweisung sein, einschließlich Blockanweisungen und weiter verschachtelterif
Anweisungen.
Beschreibung
Mehrere if...else
Anweisungen können verschachtelt werden, um einen else if
Zweig zu erstellen. Beachten Sie, dass es kein elseif
(in einem Wort) Schlüsselwort in JavaScript gibt.
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
// …
else
statementN
Um zu sehen, wie das funktioniert, sehen Sie hier, wie die Verschachtelung bei richtiger Einrückung aussehen würde:
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.
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:
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 unschuldig aus — dennoch wird das Ausführen von checkValue(1, 3)
"a is not 1" protokollieren. Dies liegt daran, dass im Fall eines dangling else der else
Zweig mit dem nächsten if
Zweig verbunden wird. Daher würde der obige Code, bei korrekter Einrückung, folgendermaßen aussehen:
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 in Code, der verschachtelte if
Anweisungen enthält.
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 booleschen Werte true
und false
mit dem Wahrheitswert oder Falschwert des Boolean
Objekts. Jeder Wert, der nicht false
, undefined
, null
, 0
, -0
, NaN
oder die leere Zeichenkette (""
) ist, und jedes Objekt, einschließlich eines booleschen Objekts, dessen Wert false
ist, wird als truthy betrachtet, wenn es als Bedingung verwendet wird. Zum Beispiel:
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // "b is truthy"
}
Beispiele
Verwendung von if...else
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 es jedoch mit einem Leerzeichen zwischen else
und if
schreiben:
if (x > 50) {
/* do something */
} else if (x > 5) {
/* do something */
} else {
/* do something */
}
Verwendung einer Zuweisung als Bedingung
Sie sollten fast nie ein if...else
mit einer Zuweisung wie x = y
als Bedingung haben:
if ((x = y)) {
// …
}
Da im Gegensatz zu while
Schleifen die Bedingung nur einmal ausgewertet wird, wird die Zuweisung nur einmal durchgeführt. Der obige Code ist äquivalent zu:
x = y;
if (x) {
// …
}
Was viel klarer ist. Wenn Sie sich jedoch in dem seltenen Fall befinden, in dem Sie so etwas tun möchten, hat die while
Dokumentation einen Abschnitt Verwendung einer Zuweisung als Bedingung mit unseren Empfehlungen.
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-if-statement |
Browser-Kompatibilität
BCD tables only load in the browser