break statement
terminates the current loop,
switch
,或
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.
break [label];
label
可选
switch
, this is required.
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.
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 has a
break
statement that terminates the
switch
statement when a case is matched and the corresponding code has ran
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;
}
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
SyntaxError
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');
}
SyntaxError
s 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'
})();
}
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Break statement' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
break
|
Chrome 1 | Edge 12 | Firefox 1 | IE 3 | Opera 4 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 | nodejs 0.1.100 |
完整支持