--- title: break slug: Web/JavaScript/Reference/Statements/break tags: - JavaScript - Довідка - Оператор translation_of: Web/JavaScript/Reference/Statements/break ---
Оператор break перериває виконання поточного циклу, перемикача {{jsxref("Statements/switch", "switch")}} або {{jsxref("Statements/label", "поміченого")}} блоку і передає контроль до наступної за перерваним блоком інструкції.
break [label];
label
{{optional_inline}}Оператор break
має необов'язкову мітку, яка дозволяє програмі переривати виконання поміченої конструкції. Оператор break
має бути розташований всередині конструкції, на яку посилається. Вона може бути будь-яким {{jsxref("Statements/block", "блоком")}} інструкцій; це необов'язково має бути цикл.
Оператор break
, з міткою або без неї, не може використовуватися всередині тіла фукнції, що вкладена у цикл, перемикач або помічений блок, який має перервати оператор break
.
Наступна фукнція містить оператор 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
з поміченими блоками. Оператор break
має знаходитися всередині будь-якої мітки, на яку посилається. Зауважте, що inner_block
вкладений у outer_block
.
outer_block: { inner_block: { console.log('1'); break outer_block; // перериває обидва 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
всередині функцій, що вкладені у цикл чи помічений блок, що їх мають перервати оператори 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' })(); }
Специфікація | Статус | Коментар |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Початкове визначення. Версія без мітки. |
{{SpecName('ES3')}} | {{Spec2('ES3')}} | Додано версію з міткою. |
{{SpecName('ES5.1', '#sec-12.8', 'Break statement')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-break-statement', 'Break statement')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.statements.break")}}