break

Оператор break перериває виконання поточного циклу, перемикача switch або поміченого блоку і передає контроль до наступної за перерваним блоком інструкції.

Синтаксис

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 Latest Draft (ECMA-262)
The definition of 'Break statement' in that specification.
Draft

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
breakChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також