--- 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}}