Оператор break перериває виконання поточного циклу, перемикача switch або поміченого блоку і передає контроль до наступної за перерваним блоком інструкції.
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];
labelOptional- Ідентифікатор, асоційований з міткою конструкції. Якщо конструкція не є циклом або перемикачем
switch, цей параметр є обов'язковим.
Опис
Оператор break має необов'язкову мітку, яка дозволяє програмі переривати виконання поміченої конструкції. Оператор break має бути розташований всередині конструкції, на яку посилається. Вона може бути будь-яким блоком інструкцій; це необов'язково має бути цикл.
Оператор break, з міткою або без неї, не може використовуватися всередині тіла фукнції, що вкладена у цикл, перемикач або помічений блок, який має перервати оператор break.
Приклади
Наступна фукнція містить оператор 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 з поміченими блоками. Оператор 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'
})();
}
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Standard | Початкове визначення. Версія без мітки. |
| ECMAScript 3rd Edition (ECMA-262) | Standard | Додано версію з міткою. |
| ECMAScript 5.1 (ECMA-262) The definition of 'Break statement' in that specification. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Break statement' in that specification. |
Standard | |
| ECMAScript (ECMA-262) The definition of 'Break statement' in that specification. |
Living Standard |
Сумісність з веб-переглядачами
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
break | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Legend
- Full support
- Full support

