Our volunteers haven't translated this article into عربي yet. Join us and help get the job done!
You can also read the article in English (US).
The break statement terminates the current loop, switch
, or label
statement and transfers program control to the statement following the terminated statement.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
break [label];
label
- Optional. Identifier associated with the label of the statement. If the statement is not a loop or
switch
, this is required.
Description
The break
statement includes an optional label that allows the program to break out of a labeled statement. The break
statement needs to be nested within the referenced label. The labeled statement can be any block
statement; it does not have to be preceded by a loop statement.
A break
statement, with or without a following label, cannot be used within the body of a function that is itself nested within the current loop, switch, or label statement that the break
statement is intended to break out of.
Examples
The following function has a break
statement that terminates the while
loop when i
is 3, and then returns the value 3 * x
.
function testBreak(x) { var i = 0; while (i < 6) { if (i == 3) { break; } i += 1; } return i * x; }
The following code uses break
statements with labeled blocks. A break
statement must be nested within any label it references. Notice that inner_block
is nested within outer_block
.
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 }
The following code also uses break
statements with labeled blocks, but generates a Syntax Error because its break
statement is within block_1
but references block_2
. A break
statement must always be nested within any label it references.
block_1: { console.log('1'); break block_2; // SyntaxError: label not found } block_2: { console.log('2'); }
Syntax Errors are also generated in the following code examples which use break
statements within functions that are nested within a loop, or labeled block that the break
statements are intended to break out of.
function testBreak(x) { var i = 0; while (i < 6) { if (i == 3) { (function() { break; })(); } i += 1; } return i * x; } testBreak(1); // SyntaxError: Illegal break statement
block_1: { console.log('1'); ( function() { break block_1; // SyntaxError: Undefined label 'block_1' })(); }
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Unlabeled version. |
ECMAScript 3rd Edition (ECMA-262) | Standard | Labeled version added. |
ECMAScript 5.1 (ECMA-262) The definition of 'Break statement' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Break statement' in that specification. |
Standard | |
ECMAScript Latest Draft (ECMA-262) The definition of 'Break statement' in that specification. |
Draft |
Browser compatibility
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basic support | Chrome Full support Yes | Edge Full support Yes | Firefox Full support 1 | IE Full support Yes | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support