--- title: break slug: Web/JavaScript/Reference/Statements/break tags: - JavaScript - Statement translation_of: Web/JavaScript/Reference/Statements/break ---
Die break Anweisung beendet die aktuelle Schleife, {{jsxref("Statements/switch", "switch")}}-Anweisung oder Anweisungen die mit einem {{jsxref("Statements/label", "label")}} versehen sind und sorgt dafür, dass das Programm mit der Anweisung weiterläuft, die auf die beendete Anweisung folgt.
break [Label];
LabelDie break Anweisung enthält ein optionales {{jsxref("Statements/label", "Label")}}, mit dem es möglich ist, eine mit einem {{jsxref("Statements/label", "Label")}} versehene Anweisung zu beenden. Dabei muss sich die break Anweisung innerhalb der Anweisung, die mit einem {{jsxref("Statements/label", "Label")}} versehen ist, befinden. Die Anweisung, die mit einem Label versehen ist, kann jede {{jsxref("Statements/block", "Block")}}-Anweisung sein und muss nicht zwingend eine Schleife sein.
Die folgende Funktion nutzt eine break Anweisung die die {{jsxref("Statements/while", "while")}} Schleife beendet, wenn i gleich 3 ist. Danach gibt die Funktion 3 * x zurück.
function testBreak(x) {
var i = 0;
while (i < 6) {
if (i == 3) {
break;
}
i += 1;
}
return i * x;
}
Der folgende Quelltext benutzt die break Anweisungen mit einem {{jsxref("Statements/label", "Label")}} auf einem {{jsxref("Statements/block", "Block")}}. Weil inner_block innerhalb vom {{jsxref("Statements/block", "Block")}} mit dem outer_block {{jsxref("Statements/label", "Label")}} ist, funktioniert break fehlerfrei.
outer_block:{
inner_block:{
console.log ('1');
break outer_block; // breaks out of both inner_block and outer_block
console.log (':-('); // skipped
}
console.log ('2'); // skipped
}
Der folgende Quelltext benutzt eine break Anweisung, die nicht auf ein {{jsxref("Statements/label", "Label")}} verweist, in dem sich das break befindet. Dieses ist nicht möglich, weshalb ein {{jsxref("Global_Objects/SyntaxError", "SyntaxError")}} erzeugt wird.
block_1:{
console.log ('1');
break block_2; // SyntaxError: Label nicht gefunden
}
block_2:{
console.log ('2');
}
| Spezifikation | Status | Kommentar |
|---|---|---|
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Initiale Definition. nur die Version ohne Labels hinzugefügt. |
| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Version mit Labels hinzugefügt. |
| {{SpecName('ES5.1', '#sec-12.8', 'Break statement')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-break-statement', 'Break statement')}} | {{Spec2('ES6')}} | |
| {{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}} | {{Spec2('ESDraft')}} |
{{ CompatibilityTable() }}
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |