Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 138

5.5.2break

Оглавление

Wird die break-Anweisung eigenständig verwendet, dann wird dadurch die innerste Schleife oder switch-Anweisung sofort verlassen. Ihre Syntax ist simpel:

break;

Diese Form der break-Anweisung ist aufgrund ihrer Wirkung nur innerhalb von Schleifen oder switch-Anweisungen erlaubt.

Beispiele für eine break-Anweisung, die in einer switch-Anweisung vorkommt, haben Sie bereits kennengelernt. In Schleifen wird sie normalerweise eingesetzt, um vorzeitig abzubrechen, wenn es aus irgendeinem Grund nicht mehr nötig ist, die Schleife noch weiter fortzusetzen. Enthält eine Schleifenanweisung komplexe Abbruchbedingungen, lassen sich einige dieser Bedingungen oft leichter mit break-Anweisungen formulieren, anstatt alle in einen einzigen Schleifenausdruck zu packen. Der folgende Code durchsucht die Elemente eines Arrays nach einem bestimmten Wert. Die Schleife wird auf übliche Weise beendet, wenn das Ende des Arrays erreicht ist. Ansonsten wird sie per break-Anweisung verlassen, sobald der gesuchte Wert im Array gefunden wird:

for(let i = 0; i < a.length; i++) {

if (a[i] === target) break;

}

In JavaScript kann nach dem Schlüsselwort break eine Anweisungsmarke angegeben werden (nur der Identifier, ohne Doppelpunkt):

break Sprungmarke;

Wird break mit einer Sprungmarke verwendet, springt es zum Ende der umschließenden Anweisung mit der entsprechenden Sprungmarke bzw. beendet diese. Gibt es keine umschließende Anweisung mit der entsprechenden Sprungmarke, führt das zu einem Syntaxfehler. Bei dieser Form der break-Anweisung muss die benannte Anweisung nicht notwendigerweise eine Schleife oder ein switch sein: Mit break kann man aus jeder umschließenden Anweisung »ausbrechen«. Das kann auch ein Anweisungsblock sein, der nur deshalb mit geschweiften Klammern umgeben wurde, damit man ihn überhaupt mit einer Sprungmarke versehen kann.

Zwischen dem Schlüsselwort break und der Sprungmarke ist ein Zeilenumbruch nicht erlaubt. Das ist eine Folge der automatischen Einfügung ausgelassener Semikola, die JavaScript vornimmt: Fügen Sie zwischen break und der darauffolgenden Sprungmarke einen Zeilenumbruch ein, geht JavaScript davon aus, dass Sie die einfache, sprungmarkenlose Form der Anweisung nutzen wollten, und behandelt den Zeilenumbruch als Semikolon (siehe 2.6).

Möchten Sie aus einer Anweisung »ausbrechen«, die nicht die nächste umschließende Schleife oder ein switch ist, müssen Sie bei der break-Anweisung eine Sprungmarke angeben. Das zeigt der folgende Code:

let matrix = getData(); // Ein beliebiges zweidimensionales Array mit Zahlen

// zuweisen.

// Summieren wir nun alle Zahlen der Matrix.

let sum = 0, success = false;

// Beginnen wir mit einer benannten Anweisung, die wir verlassen können,

// wenn Fehler auftreten.

computeSum: if (matrix) {

for(let x = 0; x < matrix.length; x++) {

let row = matrix[x];

if (!row) break computeSum;

for(let y = 0; y < row.length; y++) {

let cell = row[y];

if (isNaN(cell)) break computeSum;

sum += cell;

}

}

success = true;

}

// Hierhin springen die break-Anweisungen. Wenn wir hier mit success == false

// landen, dann hat mit der Matrix etwas nicht gestimmt.

// Ansonsten enthält sum die Summe aller Zellen der Matrix.

Abschließend sollten Sie sich noch merken, dass eine break-Anweisung – ob mit oder ohne Sprungmarke – den Programmfluss nicht über Funktionsgrenzen hinaus übergeben kann. Wird eine Anweisung zur Funktionsdefinition mit einer Sprungmarke versehen, kann man diese deshalb nicht innerhalb der Funktion verwenden.

JavaScript  –  Das Handbuch für die Praxis

Подняться наверх