break
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐпеÑаÑÐ¾Ñ break пÑеÑÑÐ²Ð°ÐµÑ Ð²Ñполнение ÑекÑÑего Ñикла, опеÑаÑоÑа множеÑÑвенного вÑбоÑа switch или блоÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¼ÐµÑкой. ÐÑполнение кода пÑодолжаеÑÑÑ Ñ ÐºÐ¾Ð½ÑÑÑÑкÑии, ÑледÑÑÑей за пÑеÑванной.
ÐнÑеÑакÑивнÑй пÑимеÑ
let i = 0;
while (i < 6) {
if (i === 3) {
break;
}
i = i + 1;
}
console.log(i);
// Expected output: 3
СинÑакÑиÑ
break [label];
labelÐеобÑзаÑелÑнÑй-
ÐденÑиÑикаÑÐ¾Ñ ÑвÑзанной меÑки. ÐÑли пÑеÑÑваемое вÑÑажение не Ñикл или
switch, Ñказание меÑки обÑзаÑелÑно.
ÐпиÑание
С помоÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа break можно пÑеÑваÑÑ Ð²Ñполнение блоÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¼ÐµÑкой. Ð Ñаком ÑлÑÑае break должен наÑ
одиÑÑÑÑ Ð²Ð½ÑÑÑи блока кода Ñ Ñказанной меÑкой. Само блоÑное вÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»ÑбÑм, а не ÑолÑко Ñиклом.
ÐÑполÑзование break, Ñ Ð¼ÐµÑкой или без, невозможно внÑÑÑи ÑÑнкÑии, коÑоÑÐ°Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð° в пÑеÑÑваемÑе Ñикл, конÑÑÑÑкÑÐ¸Ñ switch или блоÑное вÑÑажение Ñ Ð¼ÐµÑкой.
ÐÑимеÑÑ
>break в Ñикле while
СледÑÑÑÐ°Ñ ÑÑнкÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ break Ð´Ð»Ñ Ð²ÑÑ
ода из Ñикла while, когда i ÑÑÐ°Ð½ÐµÑ Ñавно 3, и возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение 3 * x.
function testBreak(x) {
var i = 0;
while (i < 6) {
if (i == 3) {
break;
}
i += 1;
}
return i * x;
}
break в конÑÑÑÑкÑии switch
РпÑимеÑе опеÑаÑÐ¾Ñ break пÑеÑвÑÑ Ð²Ñполнение switch ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° в ÑовпавÑем case.
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 в блоÑном вÑÑажении Ñ Ñказанной меÑкой
РпÑимеÑе иÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ break Ñ Ð¼ÐµÑкой. Ð Ñаком ÑлÑÑае break обÑзаÑелÑно должен бÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½ в блок кода Ñ Ñой же меÑкой. ÐбÑаÑиÑе внимание, ÑÑо inner_block вложен в outer_block.
outer_block: {
inner_block: {
console.log("1");
break outer_block; // break пÑеÑвÑÑ Ð²Ñполнение кода как в inner_block, Ñак и в outer_block
console.log(":-("); // не бÑÐ´ÐµÑ Ð²Ñполнено
}
console.log("2"); // не бÑÐ´ÐµÑ Ð²Ñполнено
}
break вне блоÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ñказанной меÑкой
РпÑимеÑе Ñакже иÑполÑзÑеÑÑÑ break Ñ Ð¼ÐµÑкой, но код бÑÐ´ÐµÑ Ð²Ñполнен Ñ Ð¾Ñибкой SyntaxError, поÑÐ¾Ð¼Ñ ÑÑо break наÑ
одиÑÑÑ Ð² блоке Ñ Ð¼ÐµÑкой block_1, а пÑеÑÑваеÑÑÑ Ð²Ñполнение блока кода Ñ Ð¼ÐµÑкой block_2. ÐÑÑ Ñаз, в Ñаком ÑлÑÑае break обÑзаÑелÑно должен бÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½ в блок кода Ñ Ð¼ÐµÑкой, вÑполнение коÑоÑого ÑÑебÑеÑÑÑ Ð¿ÑеÑваÑÑ.
block_1: {
console.log('1');
break block_2; // SyntaxError: label not found
}
block_2: {
console.log('2');
}
break внÑÑÑи ÑÑнкÑий
Ðод в пÑимеÑаÑ
Ñакже бÑÐ´ÐµÑ Ð²Ñполнен Ñ Ð¾Ñибкой SyntaxError, поÑÐ¾Ð¼Ñ ÑÑо в обоиÑ
ÑлÑÑаÑÑ
break наÑ
одиÑÑÑ Ð² Ñеле ÑÑнкÑии, вложенной в пÑеÑÑваемÑй Ñикл или пÑеÑÑваемое блоÑное вÑÑажение Ñ Ð¼ÐµÑкой.
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'
})();
}
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-break-statement> |