Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

break

BaselineWidely available

break 文は現在のループやswitch 文を終了し、プログラムの制御を終了した文の次の文に移します。ラベル付きの文の中で使用された場合は、ラベル付きの文を飛び越えるためにも使われます。

試してみましょう

let i = 0;while (i < 6) {  if (i === 3) {    break;  }  i = i + 1;}console.log(i);// Expected output: 3

構文

js
break;break label;
label省略可

終了する文のラベルに関連付けられた識別子。break 文がループやswitch の中に入れ子になっていない場合は、ラベル識別子が必要です。

解説

break; に遭遇すると、プログラムは最も内側のswitch またはループ文から抜け出し、その次の文から実行を続けます。

break label; に遭遇すると、プログラムはlabel でラベル付けされた文から抜け出し、その次の文の実行を続けます。break 文は参照されるラベルの内側にある必要があります。ラベルはあらゆるブロック文に付けることができます。ループ文の前である必要はありません。

break 文は、その後にラベルがあるかどうかに関わらず、スクリプト、モジュール、関数の本体、静的初期化ブロックのそれぞれ最上位で使用することはできません。その関数やクラスがさらにループの中に含まれていた場合でもです。

while ループにおける break

次の関数にはbreak 文があり、i3 の時にwhile 文を終了させるので、3 * x の値を返します。

js
function testBreak(x) {  let i = 0;  while (i < 6) {    if (i === 3) {      break;    }    i += 1;  }  return i * x;}

switch 文における break

次のコードには、一致する case と対応するコードが実行された後でswitch 文を終了するためのbreak があります。

js
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 としてマークされたブロック構文の末尾に移動します。

js
outerBlock: {  innerBlock: {    console.log("1");    break outerBlock; // innerBlock および outerBlock の両方から抜けます    console.log(":-("); // スキップされる  }  console.log("2"); // スキップされる}

構文違反の break 文

break 文は参照先のラベルの中になければなりません。次のコードもラベル付きブロックでbreak 文を使っていますが、break 文がblock2 を参照しているにもかかわらずblock2 の中にないので、構文エラーが発生します。

js
block1: {  console.log("1");  break block2; // SyntaxError: label not found}block2: {  console.log("2");}

構文エラーは、次のコードのようにbreak がループの中や、break 文によって脱出しようとしているラベル付きブロックの中で入れ子になっている関数で使われた場合にも、構文エラーが発生します。

js
function testBreak(x) {  let i = 0;  while (i < 6) {    if (i === 3) {      (() => {        break;      })();    }    i += 1;  }  return i * x;}testBreak(1); // SyntaxError: Illegal break statement
js
block1: {  console.log("1");  (() => {    break block1; // SyntaxError: Undefined label 'block1'  })();}

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-break-statement

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp