{"id":81065,"date":"2024-05-01T06:42:48","date_gmt":"2024-04-30T21:42:48","guid":{"rendered":"https://freelance.indieverse.co.jp/media/?p=81065"},"modified":"2025-11-01T16:33:40","modified_gmt":"2025-11-01T07:33:40","slug":"javascript-break","status":"publish","type":"post","link":"https://freelance.indieverse.co.jp/media/programming/javascript/javascript-break","title":{"rendered":"JavaScriptのループ制御：breakとcontinueの違い"},"content":{"rendered":"<p>この記事では、</p>\n<ul>\n<li>JavaScriptでのループ処理の中断方法を詳しく知りたい</li>\n<li>break文とcontinue文の違いについて理解したい</li>\n<li>for文やwhile文でのbreak文の使い方を具体的に学びたい</li>\n<li>switch文内でbreak文を使う理由とは？</li>\n<li>実践的なコード例を見て、自分のコードに活かしたい</li>\n</ul>\n<p>という悩みを抱えている向けに、</p>\n<ul>\n<li>ループからの脱出と次のループのスキップの基礎</li>\n<li>break文とcontinue文の違いと使い分け</li>\n<li>実践例を交えた効率的なループ制御の方法</li>\n</ul>\n<p>について解説していきたいと思います。</p>\n<h2>JavaScriptでループ制御を行う：break文とcontinue文の基礎</h2>\n<h3>break文とは：ループからの脱出</h3>\n<p>JavaScriptで、ある条件を満たした時にループ処理から抜け出すために用いられるのが<code>break</code>文です。ループ処理とは、同じ操作を繰り返し実行することを指しますが、無限に続けるわけにもいきません。そこで、特定の条件下でループを終了させる必要があるのです。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>for (let i = 0; i &lt; 10; i++) {\r\n    if (i === 5) {\r\n         break; // iが5になった瞬間、ループから脱出します。\r\n    }\r\n    console.log(i);\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>0\r\n1\r\n2\r\n3\r\n4</code></pre>\n</div>\n<p>このコードでは、<code>i</code>が<code>5</code>になると、<code>break</code>文によりforループが中断されます。結果、<code>5</code>以降の数字は出力されません。</p>\n<p>ループ処理はまだ残っていますが、それらの処理を中断して即座にループ終了後の処理を実行できるというわけです。</p>\n<h3>continue文とは：次のループへのスキップ</h3>\n<p>一方、<code>continue</code>文は現在のループ処理をスキップして、次のループ処理を続行します。特定の条件下でループの残りの部分をスキップしたい場合に使用されます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>for (let i = 0; i &lt; 10; i++) {\r\n    if (i === 5) {\r\n        continue; // iが5の場合、このループの残りの処理をスキップし、次のループへ進みます。\r\n    }\r\n    console.log(i);\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>0\r\n1\r\n2\r\n3\r\n4\r\n6\r\n7\r\n8\r\n9</code></pre>\n</div>\n<p>この場合、<code>i</code>が<code>5</code>のときに<code>continue</code>文が実行されるため、<code>5</code>が出力されずに次のループへと進みます。</p>\n<h3>break vs continue：違いと使い分け</h3>\n<p><code>break</code>文と<code>continue</code>文の主な違いは、<code>break</code>がループ処理から完全に抜け出し、<code>continue</code>が現在の繰り返し処理をスキップして次の繰り返し処理を行う点にあります。使い分けは、ループを完全に終了させたいのか、特定の条件だけを除外してループを継続したいのかに応じて決まります。</p>\n<p>以下の<span>サンプルコードでは、1から10までの数値を処理しています。<code>continue</code>を使って偶数の場合はスキップしている点、<code>break</code>を使って7の場合はループを終了している点に注目してください。</span></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>// 1から10までの数値を処理するループ\r\nfor (let i = 1; i &lt;= 10; i++) {\r\n    if (i % 2 === 0) {\r\n        // 偶数の場合はスキップして次の繰り返しへ\r\n        continue;\r\n    }\r\n    if (i === 7) {\r\n        // 7の場合はループ終了\r\n        break;\r\n    }\r\n    console.log(i);\r\n}</code></pre>\n</div>\n<p>実行結果：</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>1\r\n3\r\n5</code></pre>\n</div>\n<p><span>このように、</span><code>break</code><span>と</span><code>continue</code><span>を適切に使い分けることで、ループ制御を効果的に行えます。</span></p>\n<h2>JavaScriptのfor文とbreak文</h2>\n<h3>for文におけるbreakの活用法</h3>\n<p>JavaScriptでよく利用される<code>for</code>文は、決まった回数の処理を繰り返す時に非常に便利です。しかし、ある条件が満たされた時点でループを終了させたいケースもあります。そんな時に<code>break</code>文を駆使することで、ループを柔軟に制御できます。</p>\n<p>例えば、配列の中に特定の要素を探している途中で、見つかったらそこで処理を停止したいとしましょう。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>const numbers = [1, 3, 5, 7, 9, 2];\r\n\r\nfor (let i = 0; i &lt; numbers.length; i++) {\r\n    if (numbers[i] === 2) {\r\n        console.log('Found it! at index ', i);\r\n        break; // 2が見つかったら、ループから脱出します。\r\n    }\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>Found it! at index 5</code></pre>\n</div>\n<p>このサンプルでは、配列の各要素を順番にチェックし、<code>2</code>が見つかった瞬間に<code>for</code>ループから抜け出しています。これにより、無駄な処理を省き、プログラムの効率を上げることができます。</p>\n<p>また<code>break</code>文を使えば、ユーザー入力に応じて処理を中止したい場合やエラーが発生した時などにも柔軟に対応できるようになります。</p>\n<p>for文で<code>break</code>文を使用する時のポイントは、<code>break</code>文が含まれる条件分岐（<code>if</code>文など）が正しく機能するようにすることです。また、<code>break</code>文を使いすぎるとコードの可読性が落ちる場合があるので、使用は適切な場所に限るべきです。</p>\n<h2>break文の応用：ラベルとの組み合わせ</h2>\n<h3>ラベルを使用したbreak文</h3>\n<p>JavaScriptでは、ラベル（label）を使って特定のブロックに名前を付けることができます。これを<code>break</code>文と組み合わせると、ネストされたループの中から特定の位置で脱出する際に非常に便利です。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>outerLoop: for (let i = 0; i &lt; 3; i++) {\r\n    innerLoop: for (let j = 0; j &lt; 3; j++) {\r\n        if (j === 1 &amp;&amp; i === 1) {\r\n            break outerLoop; // outerLoopと名付けられた外側のループから脱出します。\r\n        }\r\n        console.log(`i=${i}, j=${j}`);\r\n    }\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>i=0, j=0\r\ni=0, j=1\r\ni=0, j=2\r\ni=1, j=0</code></pre>\n</div>\n<p>この例では、<code>outerLoop</code>ラベルがついた外側の<code>for</code>ループと、<code>innerLoop</code>ラベルがついた内側の<code>for</code>ループを使っています。<code>if</code>文の条件によって、<code>i</code>が<code>1</code>で<code>j</code>が<code>1</code>の時に外側のループから脱出しています。ラベルを用いた<code>break</code>文は、特に多重ループを扱う際にその真価を発揮します。</p>\n<h3>ラベル付きループにおけるbreak文使用の注意点</h3>\n<p>ラベルを付けた<code>break</code>文を使う際の注意点は、ラベルが指すブロックが明確であることを確認することです。適切にラベルを使わないと、コードの可読性が下がり、意図しない挙動を引き起こす可能性があります。また、<code>break</code>文だけではなく<code>continue</code>文にもラベルを使うことができますが、その使い方はまた異なります。</p>\n<p>上記のサンプルコードでは、<code>outerLoop</code>というラベルをつけたループから<code>break</code>しています。これにより、特定の条件下で即座に外側のループを終了させることが可能になり、コードの実行効率を高めることができます。</p>\n<p>ラベルを使用することは一般的ではなく、多用することは推奨されませんが、複雑なループの中で効率的に処理を行うためには避けられない場合もあります。そのため、ラベルと<code>break</code>文の組み合わせは、適切に使用すれば強力なツールになり得ます。</p>\n<p><span>なお、</span><span>ラベルを利用できるのは break 文と continue 文だけなので、 for 文や while 文などの繰り返し処理や switch 文で使用することになります。</span></p>\n<h2>JavaScriptのwhile文でのbreak使用法</h2>\n<h3>while文でのbreakによるループ終了</h3>\n<p>JavaScriptの<code>while</code>文は、指定された条件が<code>true</code>である限りループ処理を続ける構文です。この挙動は非常に便利ですが、条件がいつまでも<code>true</code>のままだと無限ループに陥りプログラムが停止してしまう恐れがあります。こうした場合にループ処理を適切に終了させるための一つの手段が、<code>break</code>文の利用です。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>let i = 0;\r\nwhile (i &lt; 10) {\r\n    if (i === 5) {\r\n        break; // iが5になったら、ループから脱出します。\r\n    }\r\n    console.log(i);\r\n    i++;\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>0\r\n1\r\n2\r\n3\r\n4</code></pre>\n</div>\n<p>このコードでは、<code>i</code>が<code>5</code>に達すると<code>break</code>文が実行され、<code>while</code>ループから抜け出しています。この結果、<code>5</code>以降の数字は出力されません。</p>\n<h3>使い方のポイント</h3>\n<p><code>while</code>文における<code>break</code>文の活用は、主に条件式が<code>true</code>のままとなってしまう可能性がある無限ループを防止するのに役立ちます。特に、外部からのユーザー入力やデータの変更など、実行時に条件が変わる可能性のある場面で重宝します。</p>\n<p>ただし、<code>break</code>文を使うことでループを強制終了できる一方で、過度に依存するとコードの読みやすさが損なわれる可能性がある点には注意が必要です。特に、ループ内で複数の<code>break</code>文が用いられる場合、プログラムのフローを追いづらくなることがあります。</p>\n<p><code>while</code>ループは<code>for</code>ループと同様に、処理を繰り返す基本的な構造です。<code>break</code>文を適切に使うことで、これらのループを効率的かつ安全に制御することが可能となります。</p>\n<h2>switch文内でのbreak文の使用</h2>\n<h3>switch文とbreak文：ケースの終了</h3>\n<p>JavaScriptの<code>switch</code>文は、複数の条件分岐を一つの構文で扱える便利な制御構造です。特定の値や式の結果に基づいて、いくつかのケース(case)のブロックから一つを実行する仕組みになっています。ここで、<code>break</code>文が非常に重要な役割を果たします。それは、特定のケースの処理が完了した後に、<code>switch</code>文を脱出するためです。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>let fruit = 'apple';\r\n\r\nswitch (fruit) {\r\n    case 'banana':\r\n        console.log('Yellow and bendy!');\r\n        break;\r\n    case 'apple':\r\n        console.log('Round and crunchy!');\r\n        break;\r\n    case 'orange':\r\n        console.log('Juicy citrus!');\r\n        break;\r\n    // デフォルトのケース\r\n    default:\r\n        console.log('Unknown fruit.');\r\n}</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>Round and crunchy!</code></pre>\n</div>\n<p>この例では、<code>fruit</code>変数の値が<code>'apple'</code>であるため、<code>'Round and crunchy!'</code>が出力され、その後に<code>break</code>文が実行されることで<code>switch</code>文から抜け出しています。<code>break</code>文がなければ、次のケースの処理に進んでしまいます。</p>\n<h3>使い方のポイント</h3>\n<p><span>JavaScriptの<code>switch</code>文における</span><code>case</code>には<span>、分岐を抜けさせる仕組みがありません。分岐を抜けるためには、</span><code>break</code>で抜けることを<span>明示する必要があります。</span><code>break</code><span>を書かない場合、次の分岐も実行されてしまいます。このような仕様を「フォールスルー(fall through)」と言います。</span></p>\n<p><code>switch</code>文において<code>break</code>文の使用を忘れると、<span>フォールスルーによって</span>プログラムは意図しない動作をする可能性があり、多くの場合はバグの原因となり得ます。</p>\n<p>したがって、<code>switch</code>文を使用する際は、各ケースに<code>break</code>文を忘れずに記述することが非常に重要です。ただし、最後のケースや<code>default</code>ケースの後には、<code>break</code>文は必須ではありませんが、慣習として書くこともあります。</p>\n<p>総じて、<code>switch</code>文内での<code>break</code>文の使用は、コードの流れを明確に制御し、プログラムの意図した動作を確実にするために不可欠です。適切に使用することで、コードの可読性と保守性を高めることができます。</p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScriptのbreakとcontinueの違いをコード例で解説。for/while・switchの使い分けやラベル付きbreakまで網羅し、効率的なループ制御が身につきます。</p>\n","protected":false},"author":105,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[192],"tags":[316,287],"class_list":["post-81065","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-java","tag-javascript"],"aioseo_notices":[],"meta_description":"JavaScriptのbreakとcontinueの違いをコード例で解説。for/while・switchの使い分けやラベル付きbreakまで網羅し、効率的なループ制御が身につきます。","_links":{"self":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/81065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts"}],"about":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/types/post"}],"author":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/users/105"}],"replies":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/comments?post=81065"}],"version-history":[{"count":6,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/81065/revisions"}],"predecessor-version":[{"id":93411,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/81065/revisions/93411"}],"wp:attachment":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/media?parent=81065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/categories?post=81065"},{"taxonomy":"post_tag","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/tags?post=81065"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}