break
Оператор 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];
label
Optional- Ідентифікатор, асоційований з міткою конструкції. Якщо конструкція не є циклом або перемикачем
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 |
Сумісність з веб-переглядачами
BCD tables only load in the browser