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:
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:
- Etwas, wovon die Bedingung abhängt.
- Eine Möglichkeit, dieses Etwas im Schleifenkörper zu verändern.
- 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:
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:
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:
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.
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:
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 iterieren →
for. Mitfor (let i = 0; i < arr.length; i++)stehen Zählerinitialisierung, Bedingung und Schritt sauber in einer Zeile. - Eine Sammlung durchlaufen →
for...of. Schöner, als einen Index selbst zu verwalten. - Laufen, bis sich ein Zustand ändert →
while. Eine Queue abarbeiten, pollen, einen Stream konsumieren, bis zum Erfolg wiederholen. - Mindestens einmal ausführen →
do...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.