| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/if...else | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Die if...else-Anweisung fhrt eine Anweisung aus, wenn eine angegebene Bedingung truthy ist. Wenn die Bedingung falsy ist, wird eine andere Anweisung im optionalen else-Zweig ausgefhrt.
function testNum(a) {
let result;
if (a > 0) {
result = "positive";
} else {
result = "NOT positive";
}
return result;
}
console.log(testNum(-5));
// Expected output: "NOT positive"
if (condition)
statement1
// With an else clause
if (condition)
statement1
else
statement2
conditionEin Ausdruck, der als entweder truthy oder falsy betrachtet wird.
statement1Anweisung, die ausgefhrt wird, wenn condition truthy ist. Kann jede Anweisung sein, einschlielich weiterer verschachtelter if-Anweisungen. Um mehrere Anweisungen auszufhren, verwenden Sie eine Block-Anweisung ({ /* ... */ }), um diese Anweisungen zu gruppieren. Um keine Anweisungen auszufhren, verwenden Sie eine leere-Anweisung.
statement2Anweisung, die ausgefhrt wird, wenn condition falsy ist und der else-Zweig existiert. Kann jede Anweisung sein, einschlielich Blockanweisungen und weiteren verschachtelten if-Anweisungen.
Mehrere if...else-Anweisungen knnen verschachtelt werden, um einen else if-Zweig zu erstellen. Beachten Sie, dass es in JavaScript kein elseif-Schlsselwort (in einem Wort) gibt.
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
//
else
statementN
Um zu sehen, wie dies funktioniert, sieht es bei richtiger Einrckung der Verschachtelung folgendermaen aus:
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 zugehrige Anweisung ausgefhrt und die restlichen else if-Zweige werden bersprungen.
Um mehrere Anweisungen innerhalb eines Zweiges auszufhren, verwenden Sie eine Blockanweisung ({ /* ... */ }), um diese Anweisungen zu gruppieren.
if (condition) {
statements1
} else {
statements2
}
Das Nichtverwenden von Blcken kann zu verwirrendem Verhalten fhren, 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 jedoch wird beim Ausfhren von checkValue(1, 3) "a is not 1" protokolliert. Dies liegt daran, dass im Fall von dangling else der else-Zweig mit der nchsten if-Anweisung verbunden wird. Daher wrde der obige Code, bei richtiger Einrckung, folgendermaen 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 bei Code mit verschachtelten if-Anweisungen.
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, einschlielich 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"
}
if (cipherChar === fromChar) {
result += toChar;
x++;
} else {
result += clearChar;
}
Beachten Sie, dass es in JavaScript keine elseif-Syntax gibt. Sie knnen es jedoch mit einem Leerzeichen zwischen else und if schreiben:
if (x > 50) {
/* do something */
} else if (x > 5) {
/* do something */
} else {
/* do something */
}
Sie sollten fast nie ein if...else mit einer Zuweisung wie x = y als Bedingung haben:
if ((x = y)) {
//
}
Denn im Gegensatz zu while-Schleifen wird die Bedingung nur einmal ausgewertet, sodass die Zuweisung nur einmal ausgefhrt wird. Der obige Code ist quivalent zu:
x = y;
if (x) {
//
}
Was viel klarer ist. Sollte es jedoch in seltenen Fllen erforderlich sein, etwas hnliches zu tun, enthlt die while-Dokumentation einen Abschnitt zu Verwendung einer Zuweisung als Bedingung mit unseren Empfehlungen.
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-if-statement |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |