break 文は現在のループ、switch
、またはラベル
文を終了し、プログラムの制御を、終了した文の次の文へと移します。
構文
break [label];
引数
label
- 省略可能。その文のラベルに関連付けられた識別子。文がループや
switch
でない場合は、ラベルが必須です。
説明
break
文は、プログラムがラベル付き文から抜け出すことを可能にする、任意のラベルを含みます。break
文は、このラベル付き文の中にネストされている必要があります。ラベル付き文はどんなブロック
文でもかまいません。ループ文である必要さえありません。
例
以下の関数は、i
が 3
の時に while
文を終了する break
文を持つので、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
文を使用していますが、break
文が block_1
の内部にあるにもかかわらず block_2
を参照していますので、Syntax Error が発生します。break
は、必ず参照先のラベルの内部にネストしなければなりません。
block_1: { console.log('1'); break block_2; // SyntaxError: label not found } block_2: { console.log('2'); }
仕様
仕様書 | 策定状況 | コメント |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | 標準 | 最初期の定義。ラベルなし版。 |
ECMAScript 3rd Edition (ECMA-262) | 標準 | ラベルあり版を追加。 |
ECMAScript 5.1 (ECMA-262) Break statement の定義 |
標準 | |
ECMAScript 2015 (6th Edition, ECMA-262) Break statement の定義 |
標準 | |
ECMAScript 2017 Draft (ECMA-262) Break statement の定義 |
ドラフト |
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |