表示されているページは、編集用 バージョンの MDN Web Docsです

MDN Web Docs のユーザーとして表示: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/break

breakは現在のループや switch 文やラベル文を中断し、中断した文の次の文にプログラムの制御を移します。

構文

break [label];
label Optional
中断する文のラベルに関連付けられた識別子。中断する文がループでも switch でもない場合、ラベルは必須です。

解説

break 文は、オプションでラベルを指定して、ラベル付き文の外にプログラムを脱出させることができます。 break 文は参照されるラベルの内側にある必要があります。ラベルはあらゆるブロック文に付けることができます。ループ文の前である必要はありません。

break 文は、その後にラベルがあるかどうかに関わらず、 break 文で脱出しようとする現在のループや switch やラベル付き文の中に含まれる関数の本体の中で使用することはできません。

while ループにおける break

次の関数には i3 の時に while 文を中断する break 文があるので、3 * x の値を返します。

function testBreak(x) {
  var 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 文は、それを参照するラベル付き文の内側になければなりません。 inner_blockouter_block の中にあることに注意してください。

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

ラベル付きブロックにおける break でエラーが発生するもの

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

block_1: {
  console.log('1');
  break block_2; // SyntaxError: label not found
}

block_2: {
  console.log('2');
}

関数における break

以下のコード例でも 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 (ECMA-262)
Break statement の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
breakChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, mdnwebdocs-bot, woodmix, ambi, yyss, teoli, ethertank, Mgjbot, Nanto vi
最終更新者: mfuji09,