Start · Sprachen · JavaScript · Referenz · while

while

Anweisung

Die <code>while</code>-Anweisung erzeugt eine Schleife, die eine Anweisung ausführt, solange die Testbedingung <code>true</code> ergibt.

seit JavaScript ES1 Kategorie: syntax

Signatur

while (condition) statement

Beschreibung

Wie andere Schleifen-Anweisungen können auch control flow-Anweisungen innerhalb von statement verwendet werden:

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

Typ
void
Beschreibung
Die 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.

  • while vs. do…while: Bei while wird der Körper möglicherweise gar nicht ausgeführt (wenn die Bedingung von Anfang an falsy ist). do…while führt den Körper mindestens einmal aus.
  • while vs. for: Wenn Initialisierung, Bedingung und Inkrement klar definiert sind, ist for kompakter und idiomatischer. while eignet sich besser für ereignisgesteuerte oder zustandsabhängige Abbruchbedingungen.
  • Async/Await: await darf innerhalb einer while-Schleife in einer async-Funktion verwendet werden und blockiert dort erwartungsgemäß den aktuellen Durchlauf.
  • Labels: Mit benannten Labels (äußere: while (…)) kann break oder continue gezielt auf eine äußere Schleife angewendet werden.