Start · Sprachen · JavaScript · Referenz · do...while

do...while

Anweisung

Die <code>do...while</code>-Anweisung erzeugt eine Schleife, die eine Anweisung ausführt, solange die Bedingung wahr ist – mindestens einmal.

seit JavaScript ES1 – Baseline: alle Browser, Node.js (alle Versio Kategorie: syntax

Signatur

do statement while (condition);

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:

  • break stoppt die Ausführung von statement und springt zur ersten Anweisung nach der Schleife.
  • continue stoppt die Ausführung von statement und wertet condition erneut 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

Typ
void
Beschreibung
Die 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...while kann 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 einem break am Ende des Körpers als lesbarere Alternative eingesetzt werden.

Siehe auch