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 (in einem Wort) gibt.
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 folgendermaßen aus:
js
if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
statement3
// …
Die Bedingungen werden in der Reihenfolge ausgewertet, bis eine Bedingung zu true ausgewertet wird. Zu diesem Zeitpunkt wird die zugehörige Anweisung ausgeführt und die restlichen else if-Zweige werden übersprungen.
Um mehrere Anweisungen innerhalb eines Zweiges 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 der nächsten if-Anweisung verbunden wird. Daher würde der obige Code, bei richtiger Einrückung, folgendermaßen 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 mit verschachtelten if-Anweisungen.
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 Booleschen Werte true und false mit der Truthiness oder Falsiness des Boolean-Objekts. Jeder Wert, der nicht false, undefined, null, 0, -0, NaN oder der leere String ("") ist, sowie jedes Objekt, einschließlich eines Booleschen Objekts, dessen Wert false ist, wird als truthy betrachtet, wenn es als Bedingung verwendet wird. Zum Beispiel:
js
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // "b is truthy"
}