Signatur
Beschreibung
Die break-Anweisung beendet die aktuelle Schleife oder switch-Anweisung und übergibt die Programmsteuerung an die Anweisung, die auf die beendete Anweisung folgt. Sie kann auch verwendet werden, um über eine gelabelte Anweisung (labeled statement) hinauszuspringen, wenn sie innerhalb dieser gelabelten Anweisung verwendet wird.
Wenn break; erreicht wird, bricht das Programm aus der innersten switch- oder Schleifen-Anweisung aus und führt die nächste Anweisung danach aus.
Wenn break label; erreicht wird, bricht das Programm aus der mit label markierten Anweisung aus und führt die nächste Anweisung danach aus. Die break-Anweisung muss innerhalb des referenzierten Labels verschachtelt sein. Die gelabelte Anweisung kann jede beliebige Anweisung sein (üblicherweise eine block-Anweisung); sie muss keine weitere Schleifen-Anweisung sein.
Eine break-Anweisung, mit oder ohne folgendes Label, kann nicht auf der obersten Ebene eines Skripts, Moduls, Funktionskörpers oder statischen Initialisierungsblocks verwendet werden, selbst wenn die Funktion oder Klasse weiter innerhalb einer Schleife enthalten ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $label | Identifier | — | Bezeichner, der mit dem Label der Anweisung verknüpft ist, zu der gesprungen werden soll. Wenn die break-Anweisung nicht innerhalb einer Schleife oder eines switch verschachtelt ist, ist der Label-Bezeichner erforderlich. |
Rückgabewert
break ist eine Anweisung und hat keinen Rückgabewert.Beispiele
break in einer while-Schleife
function testBreak(x) {
let i = 0;
while (i < 6) {
if (i === 3) {
break;
}
i += 1;
}
return i * x;
}
break in switch-Anweisungen
const food = "sushi";
switch (food) {
case "sushi":
console.log("Sushi is originally from Japan.");
break;
case "pizza":
console.log("Pizza is originally from Italy.");
break;
default:
console.log("I have never heard of that dish.");
break;
}
break in gelabelten Blöcken
outerBlock: {
innerBlock: {
console.log("1");
break outerBlock; // breaks out of both innerBlock and outerBlock
console.log(":-("); // skipped
}
console.log("2"); // skipped
}
Unsyntaktische break-Anweisungen
block1: {
console.log("1");
break block2; // SyntaxError: label not found
}
block2: {
console.log("2");
}
break in verschachtelter Funktion (Fehler)
function testBreak(x) {
let i = 0;
while (i < 6) {
if (i === 3) {
(() => {
break;
})();
}
i += 1;
}
return i * x;
}
testBreak(1); // SyntaxError: Illegal break statement
break in Arrow-Funktion innerhalb eines gelabelten Blocks (Fehler)
block1: {
console.log("1");
(() => {
break block1; // SyntaxError: Undefined label 'block1'
})();
}
// Wichtig · Fallstricke
SyntaxError bei falschem Kontext: break außerhalb einer Schleife oder switch-Anweisung ohne gültiges Label führt direkt zu einem SyntaxError beim Parsen — nicht erst zur Laufzeit.
Label-Namensgebung: Label-Bezeichner folgen denselben Regeln wie Variablennamen. Es empfiehlt sich, sprechende Namen wie außen: oder suche: zu wählen, um die Lesbarkeit zu erhalten. Übermäßige Verwendung von Labels gilt als schlechter Stil — oft ist eine Hilfsfunktion mit return die bessere Alternative.
Kein break in forEach/map: break funktioniert nicht innerhalb von Callback-Schleifen wie Array.prototype.forEach() oder Array.prototype.map() — dort muss stattdessen Array.prototype.some(), Array.prototype.every() oder eine klassische for-Schleife verwendet werden.