Baseline Widely available
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.
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 als entweder truthy oder falsy angesehen wird.
statement1
Anweisung, die ausgeführt wird, wenn condition truthy ist. Kann jede Anweisung sein, inklusive weiterer 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 der else
-Zweig existiert. Kann jede Anweisung sein, inklusive Block-Anweisungen und weiterer verschachtelter if
-Anweisungen.
Mehrere if...else
-Anweisungen können verschachtelt werden, um einen else if
-Zweig zu erstellen. Beachten Sie, dass es in JavaScript kein elseif
(in einem Wort) Schlüsselwort gibt.
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
// â¦
else
statementN
Um zu sehen, wie dies funktioniert, würde es bei korrekter Einrückung der Verschachtelung so aussehen:
if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
statement3
// â¦
Um mehrere Anweisungen innerhalb eines Zweigs auszuführen, verwenden Sie eine Block-Anweisung ({ /* ... */ }
), 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 harmlos aus â allerdings wird das Ausführen von checkValue(1, 3)
"a is not 1" protokollieren. Dies liegt daran, dass im Fall von dangling else der else
-Zweig mit dem nächstgelegenen if
-Zweig verbunden wird. Der obige Code würde 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 Block-Anweisungen zu verwenden, insbesondere bei 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 Boolean-Werte true
und false
mit der Truthyness oder Falsyness 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 angesehen, wenn er 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:
Denn im Gegensatz zu while
Schleifen wird die Bedingung nur einmal ausgewertet, sodass die Zuweisung nur einmal durchgeführt wird. Der obige Code ist äquivalent zu:
Was viel klarer ist. In dem seltenen Fall, dass Sie so etwas tun möchten, enthält die while
-Dokumentation einen Abschnitt Verwendung einer Zuweisung als Bedingung mit unseren Empfehlungen.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4