<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E5%8F%8D%E5%BE%A9%E5%87%A6%E7%90%86%28while%E6%96%87%29</id>
	<title>JavaScriptの基礎 - 反復処理(while文) - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E5%8F%8D%E5%BE%A9%E5%87%A6%E7%90%86%28while%E6%96%87%29"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E5%8F%8D%E5%BE%A9%E5%87%A6%E7%90%86(while%E6%96%87)&amp;action=history"/>
	<updated>2026-07-01T07:49:48Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E5%8F%8D%E5%BE%A9%E5%87%A6%E7%90%86(while%E6%96%87)&amp;diff=14338&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == JavaScriptの反復処理において、&lt;code&gt;while&lt;/code&gt; 文 と &lt;code&gt;do...while&lt;/code&gt; 文は、繰り返し回数が事前に決まっていない場面で使用するループ構文である。&lt;br&gt; &lt;br&gt; &lt;code&gt;while&lt;/code&gt; 文は前判定型ループであり、ループ本体を実行する前に条件を評価する。&lt;br&gt; 条件が最初から偽の場合、ループ本体は1度も実行されない。&lt;br&gt; 一方、&lt;code&gt;do...while&lt;/code&gt; 文…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E5%8F%8D%E5%BE%A9%E5%87%A6%E7%90%86(while%E6%96%87)&amp;diff=14338&amp;oldid=prev"/>
		<updated>2026-02-18T17:24:00Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == JavaScriptの反復処理において、&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文 と &amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文は、繰り返し回数が事前に決まっていない場面で使用するループ構文である。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文は前判定型ループであり、ループ本体を実行する前に条件を評価する。&amp;lt;br&amp;gt; 条件が最初から偽の場合、ループ本体は1度も実行されない。&amp;lt;br&amp;gt; 一方、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
JavaScriptの反復処理において、&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文 と &amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文は、繰り返し回数が事前に決まっていない場面で使用するループ構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文は前判定型ループであり、ループ本体を実行する前に条件を評価する。&amp;lt;br&amp;gt;&lt;br /&gt;
条件が最初から偽の場合、ループ本体は1度も実行されない。&amp;lt;br&amp;gt;&lt;br /&gt;
一方、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文は後判定型ループであり、ループ本体を必ず1回実行してから条件を評価する。&amp;lt;br&amp;gt;&lt;br /&gt;
最低1回の実行が保証されるため、ユーザー入力の検証やメニュー表示等に適している。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文はループを途中で終了させ、&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 文は現在の反復をスキップして次の反復へ進む。&amp;lt;br&amp;gt;&lt;br /&gt;
これらはネストしたループにおいてラベルと組み合わせて使用することで、外側のループを直接制御することもできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 系ループで最も注意すべき問題は無限ループである。&amp;lt;br&amp;gt;&lt;br /&gt;
ループ変数の更新忘れや、&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 使用時の更新スキップが主な原因となる。&amp;lt;br&amp;gt;&lt;br /&gt;
安全カウンタやタイムアウト機構を導入することで、無限ループの発生を予防できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== while文 ==&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文は、指定した条件が真である間、ループ本体を繰り返し実行する前判定型のループ構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
繰り返し回数が事前に不定な処理に適している。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 基本構文 ====&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文の構文は以下の通りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 while (condition) {&lt;br /&gt;
    statement&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文は、ループ本体を実行する前に &amp;lt;code&amp;gt;condition&amp;lt;/code&amp;gt; (条件式) を評価する。&amp;lt;br&amp;gt;&lt;br /&gt;
条件式が真 (truthy) であればループ本体を実行し、再び条件式を評価する。&amp;lt;br&amp;gt;&lt;br /&gt;
条件式が偽 (falsy) になった時点でループを終了し、ループ直後のコードへ処理が移る。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
条件が最初から偽の場合、ループ本体は1度も実行されない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let n = 0;&lt;br /&gt;
 while (n &amp;lt; 3) {&lt;br /&gt;
    console.log(n);&lt;br /&gt;
    n++;&lt;br /&gt;
 }&lt;br /&gt;
 // 出力: 0, 1, 2&lt;br /&gt;
 &lt;br /&gt;
 // 条件が最初から偽の場合&lt;br /&gt;
 let x = 10;&lt;br /&gt;
 while (x &amp;lt; 5) {&lt;br /&gt;
    console.log(x); // 一度も実行されない&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ループ変数の管理 ====&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文を正しく動作させるには、ループ変数を適切に管理する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
ループ変数の管理は以下の3段階で構成される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 初期化&lt;br /&gt;
*: ループ変数は &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文の前で初期化する。&lt;br /&gt;
* 条件式&lt;br /&gt;
*: ループを継続するかどうかを判定する式をループヘッダに記述する。&lt;br /&gt;
* 更新&lt;br /&gt;
*: ループ本体の最後でループ変数を更新する。更新を忘れると無限ループになる。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let i = 0;          // (1) 初期化&lt;br /&gt;
 while (i &amp;lt; 5) {     // (2) 条件式&lt;br /&gt;
    console.log(i);&lt;br /&gt;
    i++;             // (3) 更新&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ループ変数の更新をループ本体内のどこに記述するかによって、動作が異なることに注意が必要である。&amp;lt;br&amp;gt;&lt;br /&gt;
特に、&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 文と組み合わせる場合は、更新がスキップされないよう慎重に設計する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 実用的なパターン ====&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文が特に有効な実用的なパターンを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 条件が不定のループ =====&lt;br /&gt;
取得できるデータが尽きるまで繰り返す処理等、終了条件が事前に決まらない場合に &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文が有効である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、ループ変数 &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; をループの外で初期化し、ループ本体の末尾で次の値を取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // データがnullになるまで処理を続ける&lt;br /&gt;
 let data = getNextData();&lt;br /&gt;
 while (data !== null) {&lt;br /&gt;
    processData(data);&lt;br /&gt;
    data = getNextData();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== カウントダウンループ =====&lt;br /&gt;
初期値から0に向かってカウントダウンするループは、&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文で簡潔に記述できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let countdown = 10;&lt;br /&gt;
 while (countdown &amp;gt; 0) {&lt;br /&gt;
    console.log(countdown);&lt;br /&gt;
    countdown--;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 console.log(&amp;quot;発射!&amp;quot;);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 配列要素の消費 =====&lt;br /&gt;
配列から要素を順次取り出して処理するパターンでは、配列が空になったことを条件として使用できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const items = [1, 2, 3, 4, 5];&lt;br /&gt;
 &lt;br /&gt;
 // pop()で末尾から取り出す&lt;br /&gt;
 while (items.length &amp;gt; 0) {&lt;br /&gt;
    const item = items.pop();&lt;br /&gt;
    console.log(item); // 5, 4, 3, 2, 1&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // shift()で先頭から取り出す&lt;br /&gt;
 const queue = [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;];&lt;br /&gt;
 while (queue.length &amp;gt; 0) {&lt;br /&gt;
    const item = queue.shift();&lt;br /&gt;
    console.log(item); // &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pop()&amp;lt;/code&amp;gt; は配列の末尾から要素を取り出し、&amp;lt;code&amp;gt;shift()&amp;lt;/code&amp;gt; は先頭から取り出す。&amp;lt;br&amp;gt;&lt;br /&gt;
いずれもループ本体の実行ごとに配列の長さが1減少し、最終的に条件が偽になってループが終了する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do...while文 ==&lt;br /&gt;
&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文は、ループ本体を最初に1回実行してから条件を評価する後判定型のループ構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;条件の真偽に関わらず、ループ本体が必ず1回は実行されることが保証される。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 基本構文 ====&lt;br /&gt;
&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文の構文は以下の通りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 do {&lt;br /&gt;
    statement&lt;br /&gt;
 } while (condition);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; の後の条件式の末尾にはセミコロンが必要である点に注意する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let result = &amp;quot;&amp;quot;;&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 &lt;br /&gt;
 do {&lt;br /&gt;
    i++;&lt;br /&gt;
    result += i;&lt;br /&gt;
 } while (i &amp;lt; 5);&lt;br /&gt;
 &lt;br /&gt;
 console.log(result); // &amp;quot;12345&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
この例では、&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; が &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; になった時点で条件 &amp;lt;code&amp;gt;i &amp;lt; 5&amp;lt;/code&amp;gt; が偽になりループが終了する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== while文との違い ====&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 文と &amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文の最大の違いは、条件式を評価するタイミングである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ while文とdo...while文の比較&lt;br /&gt;
! 比較項目 !! while文 !! do...while文&lt;br /&gt;
|-&lt;br /&gt;
| 判定タイミング || ループ前 (前判定) || ループ後 (後判定)&lt;br /&gt;
|-&lt;br /&gt;
| 最低実行回数 || 0回 || 1回&lt;br /&gt;
|-&lt;br /&gt;
| 初期条件が偽の場合 || 1度も実行されない || 1回実行される&lt;br /&gt;
|-&lt;br /&gt;
| 主な用途 || 回数が不定のループ || 最低1回の実行が必要なループ&lt;br /&gt;
|-&lt;br /&gt;
| 末尾セミコロン || 不要 || 必要 (; で終わる)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例で、2つのループの違いを確認できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // while文: 条件が偽のため一度も実行されない&lt;br /&gt;
 let i = 10;&lt;br /&gt;
 while (i &amp;lt; 5) {&lt;br /&gt;
    console.log(&amp;quot;while:&amp;quot;, i); // 出力なし&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // do...while文: 条件が偽でも1回は実行される&lt;br /&gt;
 let j = 10;&lt;br /&gt;
 do {&lt;br /&gt;
    console.log(&amp;quot;do...while:&amp;quot;, j); // &amp;quot;do...while: 10&amp;quot;&lt;br /&gt;
 } while (j &amp;lt; 5);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 実用的なパターン ====&lt;br /&gt;
&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文が特に有効な実用的なパターンを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 入力の検証ループ =====&lt;br /&gt;
ユーザーからの入力を受け取り、その値が有効かどうかを検証するパターンでは、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文が適している。&amp;lt;br&amp;gt;&lt;br /&gt;
最初に入力を受け取ってから検証するため、自然なコードフローになる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let score;&lt;br /&gt;
 do {&lt;br /&gt;
    score = parseInt(prompt(&amp;quot;0から100のスコアを入力:&amp;quot;));&lt;br /&gt;
 } while (isNaN(score) || score &amp;lt; 0 || score &amp;gt; 100);&lt;br /&gt;
 &lt;br /&gt;
 console.log(&amp;quot;有効なスコア:&amp;quot;, score);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
入力が有効な範囲外の場合、プロンプトを繰り返し表示する。&amp;lt;br&amp;gt;&lt;br /&gt;
有効な値が入力されて初めてループを抜ける。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== メニュー表示ループ =====&lt;br /&gt;
アプリケーションのメニューを表示して選択を受け付けるパターンでは、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文が自然に使用できる。&amp;lt;br&amp;gt;&lt;br /&gt;
メニューは最低1回は必ず表示される必要があるため、後判定型が適している。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let choice;&lt;br /&gt;
 do {&lt;br /&gt;
    displayMenu();&lt;br /&gt;
    choice = getUserChoice();&lt;br /&gt;
    processChoice(choice);&lt;br /&gt;
 } while (choice !== &amp;quot;exit&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 console.log(&amp;quot;終了しました&amp;quot;);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== リトライ処理 =====&lt;br /&gt;
ネットワーク通信等で失敗した場合に一定回数まで再試行するパターンでも、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt; 文が使われる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let success = false;&lt;br /&gt;
 let retries = 0;&lt;br /&gt;
 const maxRetries = 3;&lt;br /&gt;
 &lt;br /&gt;
 do {&lt;br /&gt;
    try {&lt;br /&gt;
       const response = await fetch(url);&lt;br /&gt;
       if (response.ok) {&lt;br /&gt;
          success = true;&lt;br /&gt;
          console.log(&amp;quot;接続成功&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
       retries++;&lt;br /&gt;
       console.log(`試行 ${retries} 回目失敗:`, error.message);&lt;br /&gt;
    }&lt;br /&gt;
 } while (!success &amp;amp;&amp;amp; retries &amp;lt; maxRetries);&lt;br /&gt;
 &lt;br /&gt;
 if (!success) {&lt;br /&gt;
    console.log(&amp;quot;最大試行回数に達しました&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
最初の試行を必ず1回実行し、失敗した場合のみ再試行する。&amp;lt;br&amp;gt;&lt;br /&gt;
成功するか最大試行回数に達した時点でループを抜ける。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== break文 ==&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文は、現在のループ (&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;do...while&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;)、または &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; 文を即座に終了させる制御構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文が実行されると、ループの残りの処理をスキップしてループ直後のコードへ処理が移る。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 基本的な使用方法 ====&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文を使用することで、特定の条件が満たされた時点でループを終了させることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 目的の値が見つかったらループを抜ける&lt;br /&gt;
 const numbers = [1, 3, 5, 8, 9, 11];&lt;br /&gt;
 let found = -1;&lt;br /&gt;
 &lt;br /&gt;
 let i = 0;&lt;br /&gt;
 while (i &amp;lt; numbers.length) {&lt;br /&gt;
    if (numbers[i] % 2 === 0) {&lt;br /&gt;
       found = numbers[i];&lt;br /&gt;
       break; // 最初の偶数が見つかった時点でループを終了&lt;br /&gt;
    }&lt;br /&gt;
    i++;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 console.log(&amp;quot;最初の偶数:&amp;quot;, found); // 8&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文はネストしたループの内側にある場合、最も内側のループのみを終了させる。&amp;lt;br&amp;gt;&lt;br /&gt;
外側のループは継続される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 for (let i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
    let j = 0;&lt;br /&gt;
    while (j &amp;lt; 3) {&lt;br /&gt;
       if (j === 1) break; // 内側のwhileループを終了&lt;br /&gt;
       console.log(i, j);&lt;br /&gt;
       j++;&lt;br /&gt;
    }&lt;br /&gt;
    // 外側のforループは継続される&lt;br /&gt;
 }&lt;br /&gt;
 // 出力: 0 0, 1 0, 2 0&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ラベル付きbreak ====&lt;br /&gt;
ネストしたループで外側のループを直接終了させる場合、&amp;lt;code&amp;gt;ラベル付きbreak&amp;lt;/code&amp;gt; を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
ラベルはループの直前にコロンを付けて定義する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const matrix = [&lt;br /&gt;
    [1, 2, 3],&lt;br /&gt;
    [4, 5, 6],&lt;br /&gt;
    [7, 8, 9]&lt;br /&gt;
 ];&lt;br /&gt;
 const target = 5;&lt;br /&gt;
 let foundRow = -1;&lt;br /&gt;
 let foundCol = -1;&lt;br /&gt;
 &lt;br /&gt;
 outerLoop: for (let i = 0; i &amp;lt; matrix.length; i++) {&lt;br /&gt;
    for (let j = 0; j &amp;lt; matrix[i].length; j++) {&lt;br /&gt;
       if (matrix[i][j] === target) {&lt;br /&gt;
          foundRow = i;&lt;br /&gt;
          foundCol = j;&lt;br /&gt;
          break outerLoop; // 外側のforループを終了&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 console.log(`found at [${foundRow}][${foundCol}]`); // found at [1][1]&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ラベル付きbreak&amp;lt;/code&amp;gt; は、2次元配列の検索や複雑なネスト構造のループからの脱出に使用される。&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、ラベルの多用はソースコードの可読性を下げるため、使用は必要最小限に留めることが推奨される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== switchとbreak ====&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文は、&amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; 文の各caseの末尾にも使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; 文では &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; を省略すると次のcaseに処理が流れるフォールスルーが発生するため、意図的なフォールスルーでない限り各caseには &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; を記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; 文の詳細については、[[JavaScriptの基礎 - 条件分岐]]のページを参照すること。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const day = &amp;quot;Monday&amp;quot;;&lt;br /&gt;
 switch (day) {&lt;br /&gt;
    case &amp;quot;Monday&amp;quot;:&lt;br /&gt;
       console.log(&amp;quot;月曜日&amp;quot;);&lt;br /&gt;
       break; // break がなければ次の case へフォールスルー&lt;br /&gt;
    case &amp;quot;Tuesday&amp;quot;:&lt;br /&gt;
       console.log(&amp;quot;火曜日&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
    default:&lt;br /&gt;
       console.log(&amp;quot;その他の曜日&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== continue文 ==&lt;br /&gt;
&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 文は、現在の反復処理をスキップして次の反復へ進む制御構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; 文がループ全体を終了させるのに対し、&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 文は現在の反復のみをスキップする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 基本的な使い方 ====&lt;br /&gt;
&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 文を使用することにより、特定の条件を満たす要素をスキップしながらループを継続できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 偶数のみを出力する&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 while (i &amp;lt; 10) {&lt;br /&gt;
    i++;&lt;br /&gt;
    if (i % 2 !== 0) continue; // 奇数をスキップ&lt;br /&gt;
    console.log(i); // 2, 4, 6, 8, 10&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== forループでのcontinue ====&lt;br /&gt;
&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ループで &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; を使用する場合、更新式 (カウンタのインクリメント) は &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; 後も必ず実行される。&amp;lt;br&amp;gt;&lt;br /&gt;
これは &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ループとの重要な違いである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 for (let i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
    if (i === 3) continue; // i++ は continue の後も実行される&lt;br /&gt;
    console.log(i); // 3以外の 0, 1, 2, 4, 5, 6, 7, 8, 9 が出力&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ループでは、&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; が実行された後、ループヘッダの更新式 (&amp;lt;u&amp;gt;i++&amp;lt;/u&amp;gt;) が実行されてから次の条件判定が行われる。&amp;lt;br&amp;gt;&lt;br /&gt;
このため、無限ループになる危険性はない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== whileループでのcontinue ====&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ループで &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; を使用する場合は、ループ変数の更新に注意が必要である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; の後にループ変数の更新コードがある場合、その更新がスキップされて無限ループになる危険性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 危険なパターン: 無限ループになる&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 while (i &amp;lt; 5) {&lt;br /&gt;
    if (i === 3) continue; // i の更新がスキップされる!&lt;br /&gt;
    i++;                   // i === 3 のとき、この行は実行されない&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 安全なパターン: 更新をcontinueの前に移動&lt;br /&gt;
 let j = 0;&lt;br /&gt;
 while (j &amp;lt; 5) {&lt;br /&gt;
    j++; // 先に更新してからスキップ判定&lt;br /&gt;
    if (j === 3) continue;&lt;br /&gt;
    console.log(j); // 1, 2, 4, 5&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // もう1つの安全なパターン: continue の前に更新を記述&lt;br /&gt;
 let k = 0;&lt;br /&gt;
 while (k &amp;lt; 5) {&lt;br /&gt;
    if (k === 3) {&lt;br /&gt;
       k++; // スキップ前に更新する&lt;br /&gt;
       continue;&lt;br /&gt;
    }&lt;br /&gt;
    console.log(k);&lt;br /&gt;
    k++;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ループで &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; を使用する場合は、ループ変数の更新が必ず実行されるよう設計する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ラベル付きcontinue ====&lt;br /&gt;
ネストしたループで外側のループの次の反復へジャンプする場合、&amp;lt;code&amp;gt;ラベル付きcontinue&amp;lt;/code&amp;gt; を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const matrix = [&lt;br /&gt;
    [1, 2, 3],&lt;br /&gt;
    [4, 5, 6],&lt;br /&gt;
    [7, 8, 9]&lt;br /&gt;
 ];&lt;br /&gt;
 &lt;br /&gt;
 // 特定の行をスキップする&lt;br /&gt;
 outerLoop: for (let i = 0; i &amp;lt; matrix.length; i++) {&lt;br /&gt;
    for (let j = 0; j &amp;lt; matrix[i].length; j++) {&lt;br /&gt;
       if (matrix[i][j] === 5) {&lt;br /&gt;
          continue outerLoop; // 外側のループの次の反復へジャンプ&lt;br /&gt;
       }&lt;br /&gt;
       console.log(matrix[i][j]);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 // 出力: 1, 2, 3, 4 (5が含まれる行の残り 6 がスキップされる), 7, 8, 9&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ラベル付きcontinue&amp;lt;/code&amp;gt; により、内側のループで特定の条件を満たした時点で外側のループの次の反復に進むことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 無限ループの回避 ==&lt;br /&gt;
無限ループとは、終了条件が満たされることなく永久に繰り返されるループのことである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; 系ループではループ変数の管理を自分で行う必要があるため、無限ループが発生しやすい。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 無限ループの原因 ====&lt;br /&gt;
無限ループが発生する主な原因を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ループ変数の更新忘れ&lt;br /&gt;
*: ループ本体でループ変数を更新しないと、条件式が常に真のまま変化しない。&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 無限ループの例: i が更新されない&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 while (i &amp;lt; 10) {&lt;br /&gt;
    console.log(i);&lt;br /&gt;
    // i++ を忘れている&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* continueによる更新スキップ&lt;br /&gt;
*: &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt; の後にループ変数の更新があると、スキップされて無限ループになる。&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 無限ループの例: i === 3 のとき i++ がスキップされる&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 while (i &amp;lt; 5) {&lt;br /&gt;
    if (i === 3) continue;&lt;br /&gt;
    i++;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 終了条件が到達不可能&lt;br /&gt;
*: ループ変数は更新されているが、条件式が偽になる値に到達できない場合も無限ループになる。&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 無限ループの例: i が減少しているが条件は増加方向&lt;br /&gt;
 let i = 10;&lt;br /&gt;
 while (i &amp;lt; 100) {&lt;br /&gt;
    console.log(i);&lt;br /&gt;
    i--; // i は減少しているので条件 i &amp;lt; 100 は常に真&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 外部状態に依存した条件の変化忘れ&lt;br /&gt;
*: 外部関数が返す値や外部変数に依存した条件で、その状態が変化しない場合も無限ループになる。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 予防策 ====&lt;br /&gt;
無限ループを防ぐための予防策を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== 安全カウンタの導入 =====&lt;br /&gt;
ループに安全カウンタを設けることにより、一定回数以上の反復を強制的に停止できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 let iterations = 0;&lt;br /&gt;
 const maxIterations = 10000;&lt;br /&gt;
 &lt;br /&gt;
 while (condition &amp;amp;&amp;amp; iterations &amp;lt; maxIterations) {&lt;br /&gt;
    iterations++;&lt;br /&gt;
    // 処理&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if (iterations &amp;gt;= maxIterations) {&lt;br /&gt;
    console.warn(&amp;quot;最大反復回数に達しました。ループを強制終了します。&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== タイムアウト機構の導入 =====&lt;br /&gt;
時間ベースの終了条件を設けることにより、処理時間が長くなりすぎることを防ぐ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const startTime = Date.now();&lt;br /&gt;
 const timeout = 5000; // 5秒&lt;br /&gt;
 &lt;br /&gt;
 while (condition) {&lt;br /&gt;
    if (Date.now() - startTime &amp;gt; timeout) {&lt;br /&gt;
       console.warn(&amp;quot;タイムアウト: ループを強制終了します。&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
    }&lt;br /&gt;
    // 処理&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===== ループ変数の管理を明確にする =====&lt;br /&gt;
ループ変数の初期化、条件式、更新を一目で確認できるよう、ソースコードを整理する。&amp;lt;br&amp;gt;&lt;br /&gt;
更新漏れを防ぐために、更新処理はループ本体の先頭か末尾に統一して配置することが推奨される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 推奨: 更新をループ本体の末尾に統一&lt;br /&gt;
 let i = 0; // (1) 初期化&lt;br /&gt;
 while (i &amp;lt; limit) { // (2) 条件式&lt;br /&gt;
    // 処理&lt;br /&gt;
    i++; // (3) 更新 (常に最後)&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 無限ループの検出と対処 ====&lt;br /&gt;
実行中に無限ループを検出した場合の対処方法を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Webブラウザでの対処&lt;br /&gt;
*: [Ctrl] + [C]キー または [Ctrl] + [W]キーでスクリプトを停止する。&lt;br /&gt;
*: Webブラウザのタブを強制終了する。&lt;br /&gt;
*: デベロッパーツールのSourcesパネルで一時停止ボタンを使用する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* Node.jsでの対処&lt;br /&gt;
*: [Ctrl] + [C]キーでプロセスを停止する。&lt;br /&gt;
*: 別のターミナルから &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; コマンドでプロセスを終了する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* デバッグ方法&lt;br /&gt;
*: ループの反復回数をカウントするカウンタ変数を追加する。&lt;br /&gt;
*: &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt; でループ変数の変化を追跡する。&lt;br /&gt;
*: ブレークポイントを設定してステップ実行で状態を確認する。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // デバッグ用カウンタを追加した例&lt;br /&gt;
 let i = 0;&lt;br /&gt;
 let debugCount = 0;&lt;br /&gt;
 &lt;br /&gt;
 while (someCondition) {&lt;br /&gt;
    debugCount++;&lt;br /&gt;
    console.log(`反復 ${debugCount}: i = ${i}`);&lt;br /&gt;
 &lt;br /&gt;
    if (debugCount &amp;gt; 1000) {&lt;br /&gt;
       console.error(&amp;quot;無限ループの可能性を検出&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // ...処理&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== while系ループとfor系ループの使い分け ==&lt;br /&gt;
JavaScriptには複数のループ構文が用意されており、それぞれ適した用途がある。&amp;lt;br&amp;gt;&lt;br /&gt;
ループ構文を適切に選択することで、ソースコードの可読性と保守性が向上する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ループ構文の比較&lt;br /&gt;
! ループ !! 初期化 !! 条件判定 !! 更新 !! 最低実行回数 !! 最適な用途&lt;br /&gt;
|-&lt;br /&gt;
| while || ループ外 || ループ前 || ループ内 || 0回 || 繰り返し回数が不定なループ&lt;br /&gt;
|-&lt;br /&gt;
| do...while || ループ外 || ループ後 || ループ内 || 1回 || 最低1回の実行が必要なループ&lt;br /&gt;
|-&lt;br /&gt;
| for || ループ式内 || ループ式内 || ループ式内 || 0回 || 繰り返し回数が決まっているループ&lt;br /&gt;
|-&lt;br /&gt;
| for...of || 不要 (自動) || 自動 || 自動 || 0回 || イテラブルの値を順に処理するループ&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
各ループ構文の選択基準を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ループ構文の選択基準&lt;br /&gt;
! ループ構文 !! 選択基準&lt;br /&gt;
|-&lt;br /&gt;
| while文 || 繰り返し回数が事前に不定な場合&amp;lt;br&amp;gt;特定の条件が変化するまで繰り返す場合&amp;lt;br&amp;gt;データを順次取得しながら処理する場合&lt;br /&gt;
|-&lt;br /&gt;
| do...while文 || ループ本体を最低1回は必ず実行する必要がある場合&amp;lt;br&amp;gt;ユーザ入力の検証&amp;lt;br&amp;gt;メニュー表示&amp;lt;br&amp;gt;リトライ処理&lt;br /&gt;
|-&lt;br /&gt;
| for文 || 繰り返し回数が事前にわかっている場合&amp;lt;br&amp;gt;インデックスを使った配列へのアクセスが必要な場合&amp;lt;br&amp;gt;複数のカウンタ変数を同時に制御する場合&lt;br /&gt;
|-&lt;br /&gt;
| for...of文 || 配列&amp;lt;br&amp;gt;文字列&amp;lt;br&amp;gt;Map、Set等のイテラブルを順に処理する場合&amp;lt;br&amp;gt;インデックスが不要で値のみを扱う場合&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;for...of&amp;lt;/code&amp;gt; の詳細については、[[JavaScriptの基礎 - 反復処理(for文)]]のページを参照すること。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連情報 ==&lt;br /&gt;
* [[JavaScriptの基礎 - 変数宣言]]&lt;br /&gt;
*: let / const / varの宣言方法、スコープ、ホイスティング&lt;br /&gt;
* [[JavaScriptの基礎 - プリミティブ型]]&lt;br /&gt;
*: 7つのプリミティブ型、typeof演算子、型の自動変換&lt;br /&gt;
* [[JavaScriptの基礎 - 比較演算子と論理演算子]]&lt;br /&gt;
*: === / ==の違い、短絡評価、Null合体演算子、オプショナルチェーン&lt;br /&gt;
* [[JavaScriptの基礎 - 反復処理(for文)]]&lt;br /&gt;
*: for文、for...of、for...in、使い分け&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Web]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>