このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
break
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
break 文は現在のループやswitch 文を終了し、プログラムの制御を終了した文の次の文に移します。ラベル付きの文の中で使用された場合は、ラベル付きの文を飛び越えるためにも使われます。
In this article
試してみましょう
let i = 0;while (i < 6) { if (i === 3) { break; } i = i + 1;}console.log(i);// Expected output: 3構文
break;break label;解説
break; に遭遇すると、プログラムは最も内側のswitch またはループ文から抜け出し、その次の文から実行を続けます。
break label; に遭遇すると、プログラムはlabel でラベル付けされた文から抜け出し、その次の文の実行を続けます。break 文は参照されるラベルの内側にある必要があります。ラベルはあらゆるブロック文に付けることができます。ループ文の前である必要はありません。
break 文は、その後にラベルがあるかどうかに関わらず、スクリプト、モジュール、関数の本体、静的初期化ブロックのそれぞれ最上位で使用することはできません。その関数やクラスがさらにループの中に含まれていた場合でもです。
例
>while ループにおける break
次の関数にはbreak 文があり、i が3 の時にwhile 文を終了させるので、3 * x の値を返します。
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { break; } i += 1; } return i * x;}switch 文における break
次のコードには、一致する case と対応するコードが実行された後でswitch 文を終了するためのbreak があります。
const food = "sushi";switch (food) { case "sushi": console.log("Sushi is originally from Japan."); break; case "pizza": console.log("Pizza is originally from Italy."); break; default: console.log("I have never heard of that dish."); break;}ラベル付きブロックにおける break
次のコードは、ラベル付きブロックでbreak 文を使っています。break outerBlock を使用すると、制御はouterBlock としてマークされたブロック構文の末尾に移動します。
outerBlock: { innerBlock: { console.log("1"); break outerBlock; // innerBlock および outerBlock の両方から抜けます console.log(":-("); // スキップされる } console.log("2"); // スキップされる}構文違反の break 文
break 文は参照先のラベルの中になければなりません。次のコードもラベル付きブロックでbreak 文を使っていますが、break 文がblock2 を参照しているにもかかわらずblock2 の中にないので、構文エラーが発生します。
block1: { console.log("1"); break block2; // SyntaxError: label not found}block2: { console.log("2");}構文エラーは、次のコードのようにbreak がループの中や、break 文によって脱出しようとしているラベル付きブロックの中で入れ子になっている関数で使われた場合にも、構文エラーが発生します。
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { (() => { break; })(); } i += 1; } return i * x;}testBreak(1); // SyntaxError: Illegal break statementblock1: { console.log("1"); (() => { break block1; // SyntaxError: Undefined label 'block1' })();}仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-break-statement> |