--- title: break slug: Web/JavaScript/Reference/Statements/break tags: - JavaScript - Возможности языка - Справочник - Оператор translation_of: Web/JavaScript/Reference/Statements/break browser-compat: javascript.statements.break ---
Оператор break прерывает выполнение текущего цикла,
оператора множественного выбора {{jsxref("Statements/switch", "switch")}} или блочного {{jsxref("Statements/label", "выражения с меткой", "", 1)}}.
Выполнение кода продолжается с конструкции, следующей за прерванной.
break [label];
label {{optional_inline}}С помощью оператора break можно прервать выполнение {{jsxref("Statements/block", "блочного выражения", "", 1)}} с меткой.
В таком случае break должен находиться внутри блока кода с указанной меткой. Само блочное выражение может быть любым, а не только циклом.
Использование break, с меткой или без, невозможно внутри функции,
которая вложена в прерываемые цикл, конструкцию {{jsxref("Statements/switch", "switch")}}
или {{jsxref("Statements/block", "блочное выражение", "", 1)}} с меткой.
Следующая функция использует оператор break для выхода из цикла
{{jsxref("Statements/while", "while")}}, когда i станет равно 3, и возвращает
значение 3 * x.
function testBreak(x) {
var i = 0;
while (i < 6) {
if (i == 3) {
break;
}
i += 1;
}
return i * x;
}
В примере оператор break прервёт выполнение {{jsxref("Statements/switch", "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
обязательно должен быть вложен в блок кода с той же меткой. Обратите внимание,
что 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 с меткой,
но код будет выполнен с ошибкой SyntaxError,
потому что break находится в блоке с меткой block_1,
а прерывается выполнение блока кода с меткой block_2.
Ещё раз, в таком случае break обязательно должен быть вложен в блок кода с меткой,
выполнение которого требуется прервать.
block_1: {
console.log('1');
break block_2; // SyntaxError: label not found
}
block_2: {
console.log('2');
}
Код в примерах также будет выполнен с ошибкой 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'
})();
}
{{Compat}}