do...while
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 do...while
-Anweisung erstellt eine Schleife, die eine angegebene Anweisung ausführt, solange die Testbedingung als true
ausgewertet wird. Die Bedingung wird nach der Ausführung der Anweisung überprüft, was dazu führt, dass die angegebene Anweisung mindestens einmal ausgeführt wird.
Probieren Sie es aus
let result = "";
let i = 0;
do {
i = i + 1;
result = result + i;
} while (i < 5);
console.log(result);
// Expected output: "12345"
Syntax
do
statement
while (condition);
statement
-
Eine Anweisung, die mindestens einmal ausgeführt und solange erneut ausgeführt wird, wie die Bedingung als
true
ausgewertet wird. Sie können eine Block-Anweisung verwenden, um mehrere Anweisungen auszuführen. condition
-
Ein Ausdruck, der nach jedem Durchlauf der Schleife ausgewertet wird. Wenn diese Bedingung als wahr ausgewertet wird, wird
statement
erneut ausgeführt. Wenn die Bedingung als falsch ausgewertet wird, wird die Ausführung mit der Anweisung nach derdo...while
-Schleife fortgesetzt.
Beschreibung
Wie bei anderen Schleifenanweisungen können Sie Kontrollflussanweisungen innerhalb von statement
verwenden:
break
stoppt die Ausführung vonstatement
und fährt mit der ersten Anweisung nach der Schleife fort.continue
stoppt die Ausführung vonstatement
und wertet diecondition
erneut aus.
Die Syntax der do...while
-Anweisung erfordert ein Semikolon am Ende, aber der Prozess der automatischen Semikolon-Einfügung kann eines einfügen, wenn das Fehlen eines Semikolons zu ungültiger Syntax führt.
Beispiele
Verwendung von do...while
Im folgenden Beispiel iteriert die do...while
-Schleife mindestens einmal und wiederholt sich, bis i
nicht mehr kleiner als 5 ist.
let result = "";
let i = 0;
do {
i += 1;
result += `${i} `;
} while (i > 0 && i < 5);
// Despite i === 0 this will still loop as it starts off without the test
console.log(result);
Verwendung von false als do...while-Bedingung
Da die Anweisung immer mindestens einmal ausgeführt wird, ist do...while (false)
dasselbe wie die Anweisung selbst auszuführen. Dies ist ein gängiges Idiom in C-ähnlichen Sprachen, das es ermöglicht, mithilfe von break
frühzeitig aus der Verzweigungslogik auszubrechen.
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);
// The rest of code
In JavaScript gibt es einige Alternativen, wie die Verwendung einer bezeichneten Block-Anweisung mit break
:
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);
}
}
Oder die Verwendung 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);
}
}
Verwendung einer Zuweisung als Bedingung
In einigen Fällen kann es sinnvoll sein, eine Zuweisung als Bedingung zu verwenden, wie in diesem Beispiel:
do {
// …
} while ((match = regexp.exec(str)));
Wenn Sie dies tun, gibt es jedoch Nachteile in Bezug auf die Lesbarkeit. Die Dokumentation zur while
-Schleife enthält einen Abschnitt Verwendung einer Zuweisung als Bedingung mit unseren Empfehlungen.
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-do-while-statement |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
do...while |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support