Signatur
Beschreibung
Die do...while-Anweisung erzeugt eine Schleife, die eine angegebene Anweisung ausführt, solange die Testbedingung zu true auswertet. Die Bedingung wird nach der Ausführung der Anweisung ausgewertet, wodurch die angegebene Anweisung mindestens einmal ausgeführt wird.
Wie bei anderen Schleifenanweisungen können Sie innerhalb von statement Kontrollflussanweisungen verwenden:
breakstoppt die Ausführung vonstatementund springt zur ersten Anweisung nach der Schleife.continuestoppt die Ausführung vonstatementund wertetconditionerneut aus.
Die Syntax der do...while-Anweisung erfordert ein Semikolon am Ende, aber der Prozess der automatischen Semikolon-Einfügung (automatic semicolon insertion) kann eines für Sie einfügen, wenn das Fehlen eines Semikolons zu ungültiger Syntax führen würde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | Statement | — | Eine Anweisung, die mindestens einmal ausgeführt und erneut ausgeführt wird, solange die Bedingung zu true auswertet. Sie können ein block statement verwenden, um mehrere Anweisungen auszuführen. |
| $condition Pflicht | Expression | — | Ein Ausdruck, der nach jedem Schleifendurchlauf ausgewertet wird. Wenn diese Bedingung zu true auswertet, wird statement erneut ausgeführt. Wenn die Bedingung zu false auswertet, wird die Ausführung mit der Anweisung nach der do...while-Schleife fortgesetzt. |
Rückgabewert
do...while-Anweisung gibt keinen Wert zurück.Beispiele
do...while verwenden
let result = "";
let i = 0;
do {
i += 1;
result += `${i} `;
} while (i > 0 && i < 5);
// Obwohl i === 0 ist, wird die Schleife dennoch durchlaufen, da sie ohne den Test beginnt
console.log(result);
false als do...while-Bedingung verwenden
do {
if (!user.loggedIn) {
console.log("You are not logged in");
break;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
break;
}
for (const friend of friends) {
handleFriend(friend);
}
} while (false);
// Der Rest des Codes
Alternative mit labeled block statement
handleFriends: {
if (!user.loggedIn) {
console.log("You are not logged in");
break handleFriends;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
break handleFriends;
}
for (const friend of friends) {
handleFriend(friend);
}
}
Alternative mit einer Funktion
function handleFriends() {
if (!user.loggedIn) {
console.log("You are not logged in");
return;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
return;
}
for (const friend of friends) {
handleFriend(friend);
}
}
Eine Zuweisung als Bedingung verwenden
do {
// …
} while ((match = regexp.exec(str)));
// Wichtig · Fallstricke
Semikolon nach der schließenden Klammer: Das abschließende while(bedingung); erfordert ein Semikolon. Wird es weggelassen, kann Automatic Semicolon Insertion (ASI) in manchen Fällen zu unerwarteten Fehlern führen – gerade wenn danach sofort eine weitere Anweisung beginnt.
- Endlosschleifen vermeiden: Stelle sicher, dass der Schleifenkörper eine Variable verändert, die von der Bedingung ausgewertet wird.
- Lesbarkeit:
do...whilekann für Leser ungewohnt sein, da die Bedingung am Ende steht. Ein erklärender Kommentar verbessert die Wartbarkeit. - Alternativen: Für die meisten fußgesteuerten Schleifen kann auch eine
while(true)-Schleife mit einembreakam Ende des Körpers als lesbarere Alternative eingesetzt werden.