Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 139
5.5.3continue
ОглавлениеDie continue-Anweisung ähnelt der break-Anweisung. Anstatt aber eine Schleife zu verlassen, stößt continue eine neue Iteration der Schleife an. Die Syntax der continue-Anweisung ist genauso einfach wie bei break:
continue;
continue kann ebenfalls mit einer Sprungmarke verwendet werden:
continue Sprungmarke;
Die continue-Anweisung kann in beiden Formen, also mit und ohne Sprungmarke, nur innerhalb eines Schleifenkörpers verwendet werden. Einsätze an anderer Stelle lösen Syntaxfehler aus.
Durch die Ausführung einer continue-Anweisung wird der aktuelle Durchlauf der umschließenden Schleife abgebrochen und der nächste Durchlauf begonnen. Das hat je nach Schleifenart unterschiedliche Folgen:
In einer while-Schleife wird der am Anfang der Schleife festgelegte Ausdruck erneut geprüft, und der Schleifeninhalt wird – sofern der Ausdruck true ergibt – wieder von Beginn an ausgeführt.
Bei einer do/while-Schleife springt die Ausführung ans Ende der Schleife, wo die Schleifenbedingung geprüft wird, bevor die Schleife gegebenenfalls erneut ausgeführt wird.
Bei einer for-Schleife wird der Ausdruck Inkrementierung ausgewertet, bevor eine erneute Prüfung des Testausdrucks darüber entscheidet, ob ein weiterer Durchlauf erfolgen soll.
In einer for/of- oder for/in-Schleife beginnt die Schleife von vorn, wobei der angegebenen Variablen der nächste aufzählbare Wert oder Eigenschaftsname zugewiesen wird.
Beachten Sie das unterschiedliche Verhalten der continue-Anweisung bei while- und for-Schleifen: Während eine while-Schleife unmittelbar zur Bedingung zurückkehrt, wird in einer for-Schleife erst der Inkrementierungsausdruck auswertet, bevor die Bedingung geprüft wird. Weiter oben haben wir uns das Verhalten einer for-Schleife anhand einer gleichwertigen while-Schleife angesehen. Da sich die continue-Anweisung jedoch bei diesen beiden Schleifen unterschiedlich verhält, kann man eine for-Schleife mit einer while-Schleife alleine nicht vollständig simulieren.
Das folgende Beispiel zeigt eine unbenannte continue-Anweisung, mit deren Hilfe der Rest der aktuellen Iteration einer Schleife übersprungen wird, wenn ein Fehler auftritt:
for(let i = 0; i < data.length; i++) {
if (!data[i]) continue; // Fortsetzung mit undefinierten Daten nicht möglich.
total += data[i];
}
Wie auch die break-Anweisung kann continue bei verschachtelten Schleifen zusammen mit einer Label-Angabe verwendet werden, sofern die Schleife, die neu gestartet werden soll, nicht die innerste umschließende Schleife ist. Und wie bei break darf zwischen dem Schlüsselwort continue und der Sprungmarke kein Zeilenumbruch stehen.