Mit einer while-Schleife kannst du Code so lange wiederholt ausführen, wie eine bestimmte Bedingung erfüllt ist.
Sie wird mit dem while-Schlüsselwort geschrieben, gefolgt von einer Bedingung in runden Klammern und einem Block in geschweiften Klammern, der den Schleifenblock enthält.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
JavaScript kennt außerdem eine do-while-Schleife. Hier prüft JavaScript die Bedingung erst, nachdem der Schleifenblock ausgeführt wurde. Das ist nützlich, wenn die Bedingung von Auswertungen abhängt, die im Block vorgenommen werden.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
Innerhalb eines Schleifenblocks kannst du das break-Schlüsselwort verwenden, um die Ausführung der Schleife vollständig zu beenden.
Das wird oft in Kombination mit true als Bedingung verwendet.
Damit kannst du von jeder Stelle im Schleifenblock aus steuern, wann die Schleife stoppen soll.
const winningNumber = 7;
while (true) {
const num = readUserGuess();
if (num === winningNumber) {
break;
}
}
Das break-Schlüsselwort kann nicht innerhalb einer Funktion verwendet werden, die in der Schleife verschachtelt ist, ein Beispiel findest du in der MDN-Dokumentation.
Im Gegensatz zu break stoppt das Schlüsselwort continue nur die Ausführung der aktuellen Iteration und fährt mit der nächsten fort.
Mit continue kannst du oft vermeiden, große Teile des Schleifenblocks in eine if-Anweisung zu packen.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
Eine Schleife, die (theoretisch) immer weiter wiederholt wird, entsteht, wenn die Schleifenbedingung immer erfüllt ist und im Schleifenblock keine break- oder return-Anweisung erreicht wird. Die Ausführung muss von außen beendet werden. Je nach Umgebung, in der solcher Code läuft, geschieht das automatisch oder erfordert einen manuellen Eingriff.
let i = 0;
while (i < 100) {
if (i % 3 === 0) {
continue;
}
i = i + 2;
}
// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.
Endlosschleifen zu erkennen mag in diesem einfachen Beispiel trivial erscheinen, ist aber bei komplexerem Code nicht immer so leicht. Es ist gute Praxis, gründlich darüber nachzudenken, ob deine Bedingung irgendwann falsch wird oder ob deine break- oder return-Anweisung erreicht wird.