Signatur
Beschreibung
Wie andere Schleifen-Anweisungen können auch control flow-Anweisungen innerhalb von statement verwendet werden:
breakbeendet die Ausführung vonstatementund springt zur ersten Anweisung nach der Schleife.continuebeendet die Ausführung vonstatementund wertetconditionerneut aus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $condition Pflicht | expression | — | Ein Ausdruck, der vor jedem Schleifendurchlauf ausgewertet wird. Wenn diese Bedingung truthy ist, wird statement ausgeführt. Wenn die Bedingung falsy ist, wird die Ausführung mit der Anweisung nach der while-Schleife fortgesetzt. |
| $statement Pflicht | statement | — | Eine Anweisung, die ausgeführt wird, solange die Bedingung truthy ist. Ein block statement kann verwendet werden, um mehrere Anweisungen auszuführen. |
Rückgabewert
while-Anweisung hat keinen Rückgabewert.Beispiele
while verwenden
let n = 0;
let x = 0;
while (n < 3) {
n++;
x += n;
}
Eine Zuweisung als Bedingung verwenden
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
let currentNode;
while (currentNode = iterator.nextNode()) {
console.log(currentNode.textContent.trim());
}
Zuweisung mit zusätzlichen Klammern
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
let currentNode;
while ((currentNode = iterator.nextNode())) {
console.log(currentNode.textContent.trim());
}
Explizite Vergleichsoperation
while ((currentNode = iterator.nextNode()) !== null) {
Alternative Schreibweise
while ((currentNode = iterator.nextNode()) && currentNode) {
Mit einer for-Schleife
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
for (
let currentNode = iterator.nextNode();
currentNode;
currentNode = iterator.nextNode()
) {
console.log(currentNode.textContent.trim());
}
// Wichtig · Fallstricke
Endlosschleifen vermeiden: Stellen Sie sicher, dass die Bedingungsvariable im Schleifenkörper tatsächlich verändert wird, sodass die Bedingung irgendwann falsy wird. Ein versehentlich fehlendes i++ oder eine nie wechselnde Flag-Variable führt zu einem eingefrorenen Tab oder Prozess.
whilevs.do…while: Beiwhilewird der Körper möglicherweise gar nicht ausgeführt (wenn die Bedingung von Anfang an falsy ist).do…whileführt den Körper mindestens einmal aus.whilevs.for: Wenn Initialisierung, Bedingung und Inkrement klar definiert sind, istforkompakter und idiomatischer.whileeignet sich besser für ereignisgesteuerte oder zustandsabhängige Abbruchbedingungen.- Async/Await:
awaitdarf innerhalb einerwhile-Schleife in einerasync-Funktion verwendet werden und blockiert dort erwartungsgemäß den aktuellen Durchlauf. - Labels: Mit benannten Labels (
äußere: while (…)) kannbreakodercontinuegezielt auf eine äußere Schleife angewendet werden.