Menu

JavaScript while-Schleife: while, do...while, break & continue

So funktionieren while und do...while in JavaScript – wann sie besser passen als eine for-Schleife und wie du Endlosschleifen zuverlässig vermeidest.

Wenn du nicht weißt, wie viele Durchläufe du brauchst

Eine for-Schleife ist perfekt, wenn der Umfang von vornherein feststeht – "mach das 10 Mal" oder "geh jeden Index dieses Arrays durch". Die while-Schleife in JavaScript ist für den anderen Fall gedacht: so lange weitermachen, bis sich etwas ändert. Du weißt nicht, wie viele Iterationen nötig sind – nur, welche Bedingung dich zum Stoppen bringt.

Der Aufbau ist denkbar schlank:

index.js
Output
Click Run to see the output here.

JavaScript prüft die Bedingung in den Klammern. Ist sie truthy, läuft der Block. Danach wird die Bedingung erneut geprüft, und nochmal, und nochmal — so lange, bis sie falsy wird. Vergisst du das count++, ändert sich die Bedingung nie — willkommen in der Endlosschleife.

So denkst du über die while-Schleife: prüfen, ausführen, wiederholen

Damit eine while-Schleife in JavaScript überhaupt Sinn ergibt, müssen drei Dinge zusammenkommen:

  1. Etwas, wovon die Bedingung abhängt.
  2. Eine Möglichkeit, dieses Etwas im Schleifenkörper zu verändern.
  3. Irgendwann wird die Bedingung false.

Fehlt auch nur einer dieser Punkte, hast du ein Problem. Der Klassiker unter den Bugs: Schritt 2 vergessen:

let count = 0;

while (count < 5) {
    console.log(count);
    // vergessen, count zu erhöhen — läuft endlos
}

Das läuft, bis du den Prozess abschießt. Auf einem Server kann so etwas richtig weh tun. Frag dich deshalb immer: Was im Schleifenrumpf sorgt dafür, dass die Bedingung irgendwann false wird?

Ein echter Anwendungsfall: unbekannter Abbruchpunkt

Genau hier spielt die while-Schleife ihre Stärke gegenüber for aus. Du arbeitest Einträge aus einer Quelle ab und weißt vorher schlicht nicht, wie viele es sind – du merkst es erst, wenn nichts mehr nachkommt:

index.js
Output
Click Run to see the output here.

shift() entfernt das erste Element aus dem Array und gibt es zurück. Die Schleife läuft, solange die Queue noch etwas enthält, und bricht von selbst ab, wenn sie leer ist. Du könntest das auch mit einer for-Schleife lösen, würdest aber gegen die Natur des Problems arbeiten – die while-Schleife drückt die Absicht hier einfach klarer aus.

do...while: Erst ausführen, dann prüfen

do...while in JavaScript dreht die Reihenfolge um: Erst wird der Schleifenrumpf ausgeführt, danach wird die Bedingung geprüft. Damit ist garantiert, dass der Code mindestens einmal durchläuft:

index.js
Output
Click Run to see the output here.

Der Schleifenrumpf wird immer mindestens einmal ausgeführt – selbst dann, wenn die Bedingung von Anfang an false ist. Genau das ist der Unterschied zur klassischen while-Schleife: Dort bedeutet eine false-Bedingung null Durchläufe.

Ein typisches Szenario aus dem Alltag: Du fragst eine Nutzereingabe ab, validierst die Antwort und fragst bei ungültiger Eingabe erneut nach. Da du ohnehin mindestens einmal fragen willst, passt do...while hier wie die Faust aufs Auge.

Achte auf das Semikolon nach der schließenden ) – im Gegensatz zu while und for ist es bei do...while Pflicht.

break: Schleife vorzeitig abbrechen

Mit break verlässt du die innerste Schleife sofort. So brichst du eine JavaScript-Schleife ab, wenn die reguläre Bedingung allein nicht das richtige Abbruchkriterium liefert:

index.js
Output
Click Run to see the output here.

Sobald break ausgeführt wird, läuft im Schleifenkörper nichts mehr — weder der restliche Code noch eine weitere Bedingungsprüfung. Du bist raus.

while (true) mit break

Manchmal lässt sich die Abbruchbedingung schlecht im Schleifenkopf formulieren, dafür aber umso klarer im Körper. Dann dreh den Spieß einfach um: endlos laufen lassen und mit break aussteigen, wenn du fertig bist.

index.js
Output
Click Run to see the output here.

Zwei Ausstiege: einmal der Erfolgsfall und einmal das Sicherheitslimit. Dieses Sicherheitslimit ist entscheidend. Ein while (true) ohne garantierten break-Pfad ist eine tickende Zeitbombe – die Endlosschleife ist quasi vorprogrammiert.

continue: direkt zur nächsten Iteration springen

Mit continue springst du sofort zur nächsten Bedingungsprüfung und überspringst den Rest des aktuellen Schleifendurchlaufs:

index.js
Output
Click Run to see the output here.

Ein Stolperstein: Wenn das, was deine Schleife vorwärts bringt, hinter dem continue steht, hast du dir gerade eine Endlosschleife gebaut. Im Beispiel oben steht n++ vor dem continue, also sind wir auf der sicheren Seite. Packst du es dahinter, bleibt n für immer auf einer geraden Zahl hängen.

while vs. for: Wann nimmst du was?

Eine einfache Faustregel:

  • Zählen oder über einen bekannten Bereich iterierenfor. Mit for (let i = 0; i < arr.length; i++) stehen Zählerinitialisierung, Bedingung und Schritt sauber in einer Zeile.
  • Eine Sammlung durchlaufenfor...of. Schöner, als einen Index selbst zu verwalten.
  • Laufen, bis sich ein Zustand ändertwhile. Eine Queue abarbeiten, pollen, einen Stream konsumieren, bis zum Erfolg wiederholen.
  • Mindestens einmal ausführendo...while.

Theoretisch sind sie austauschbar – jedes for lässt sich als while schreiben und umgekehrt. Aber die Variante zu wählen, die zur Form des Problems passt, macht den Code praktisch selbsterklärend.

Endlosschleifen in JavaScript vermeiden: die eine Regel

Jede while-Schleife braucht eine klare Antwort auf die Frage: Was sorgt dafür, dass sie stoppt?

Entweder die Bedingung im Kopf wird irgendwann false, oder es gibt ein break, das garantiert ausgeführt wird. Kannst du auf keines von beidem zeigen, ist die Schleife noch nicht fertig.

// Schlecht: Bedingung ändert sich nie
let ready = false;
while (!ready) {
    console.log("warte...");
    // nichts hier drin setzt `ready` um
}

// Gut: der Körper beeinflusst die Bedingung
let ready = false;
let checks = 0;
while (!ready) {
    checks++;
    if (checks >= 3) ready = true;
}

Im Browser friert eine Endlosschleife den Tab ein. In Node lastet sie einen CPU-Kern voll aus, bis du den Prozess abschießt. Sowas solltest du abfangen, bevor es in Produktion geht.

Als Nächstes: for...of und for...in

Die while-Schleife ist perfekt für den Fall „so lange, bis sich etwas ändert". Willst du dagegen Arrays, Strings oder Objekte Element für Element durchgehen, bietet JavaScript zwei weitere Schleifenformen, die genau dafür gemacht sind — for...of und for...in. Die schauen wir uns als Nächstes an.

Häufig gestellte Fragen

Was ist eine while-Schleife in JavaScript?

Eine while-Schleife führt ihren Body so lange aus, wie die angegebene Bedingung truthy ist. JavaScript prüft zuerst die Bedingung, führt dann den Block aus und prüft anschließend erneut. Ist die Bedingung schon beim ersten Mal false, wird der Body gar nicht ausgeführt.

Wo liegt der Unterschied zwischen while und do...while?

while prüft die Bedingung vor dem Body – null Durchläufe sind also möglich. do...while führt den Body erst einmal aus und prüft dann die Bedingung, läuft also mindestens einmal. do...while passt immer dann, wenn der erste Durchlauf auf jeden Fall stattfinden soll, etwa wenn du den User nach einer Eingabe fragst.

Wie breche ich eine while-Schleife in JavaScript ab?

Mit break verlässt du die Schleife sofort, mit continue springst du zur nächsten Iteration. break ist auch der Trick, mit dem du while (true)-Schleifen sauber in den Griff bekommst: endlos laufen lassen und dann im Body bei einer bestimmten Bedingung aussteigen.

Lerne mit Coddy zu programmieren

LOS GEHT'S