From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../reference/statements/break/index.html | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 files/ja/web/javascript/reference/statements/break/index.html (limited to 'files/ja/web/javascript/reference/statements/break/index.html') diff --git a/files/ja/web/javascript/reference/statements/break/index.html b/files/ja/web/javascript/reference/statements/break/index.html new file mode 100644 index 0000000000..4ee541b435 --- /dev/null +++ b/files/ja/web/javascript/reference/statements/break/index.html @@ -0,0 +1,157 @@ +--- +title: break +slug: Web/JavaScript/Reference/Statements/break +tags: + - JavaScript + - Language feature + - Reference + - Statement +translation_of: Web/JavaScript/Reference/Statements/break +--- +
{{jsSidebar("Statements")}}
+ +

breakは現在のループや {{jsxref("Statements/switch", "switch")}} 文や{{jsxref("Statements/label", "ラベル", "", 1)}}文を中断し、中断した文の次の文にプログラムの制御を移します。

+ +
{{EmbedInteractiveExample("pages/js/statement-break.html")}}
+ + + +

構文

+ +
break [label];
+ +
+
label {{optional_inline}}
+
中断する文のラベルに関連付けられた識別子。中断する文がループでも {{jsxref("Statements/switch", "switch")}} でもない場合、ラベルは必須です。
+
+ +

解説

+ +

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

+ +

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

+ +

+ +

while ループにおける break

+ +

次の関数には i3 の時に {{jsxref("Statements/while", "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 と対応するコードが実行された後で {{jsxref("Statements/switch", "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'
+  })();
+}
+
+ +

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}}
+ +

ブラウザーの互換性

+ + + +

{{Compat("javascript.statements.break")}}

+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf