JavaScript/制御構造
条件分岐

プログラムはしばしば、特定の条件に基づいた決定や同じコードの反復が必要な場面に直面します。JavaScriptでは、このような状況に対処するために「制御構造」が利用されます。制御構造は、プログラムの実行フローを操作し、条件に応じてコードを分岐させたり、同じ処理を繰り返すための手段です。
条件分岐

JavaScriptの制御構造を理解することは、効果的で効率的なプログラミングの基本となります。これにより、コードの柔軟性が向上し、複雑なタスクにも対応できるようになります。次のステップでは、具体的な例を通じて制御構造の活用方法を学び、より高度なプログラミングスキルを養っていきましょう。
条件分岐

次のプログラムは、、
条件分岐

このコードは、「NaN(Not a Number)」という特殊な数値を扱うものです。まず、「use strict」が指定されているため、コードは厳密モードで実行されます。
条件分岐

次に、0を0で割った結果がnに格納されています。JavaScriptでは、0を0で割るとNaNが返ります。その後、nが負の数より小さいか、正の数より大きいか、0より大きいか、以上の条件分岐が行われます。
条件分岐

しかし、NaNは数値としては未定義であるため、比較演算子(<、>、=)を使って大小を比較することはできません。そのため、if文の条件式は一つでも成り立たなくなり、最後のelse節が実行されます。その結果、コンソールには「NaN」と出力されます。
条件分岐

この様な、分岐を始めとする制御構造はプログラミングを行う上で欠かせません。
条件分岐

if文( if statement )は「もし〜ならば」を表す条件分岐構文です。 if文では()の中に書かれた条件が truthy であるとき続く文が実行されます。 次のプログラムは、n < 0(nが0より小さい)という条件が真であるときのみ「負の数」と表示します。
条件分岐

if文のあとにelse節( else clause )を置くと、else節の文はif文の条件が falsy であるときのみ実行されます。 次のプログラムは、n < 0(nが0より小さい)という条件が真であれば「負の数」、さもなくば「自然数」と表示します。
条件分岐

if文とelse節をあわせてif/else文と呼びます。
条件分岐

else節の文をif文とすることで、次のように何個もつらねることができます。
条件分岐

なお、この場合は条件演算子を用いて簡潔に書くことができます。
条件分岐

if文の条件式はすべてtrueかfalseの真偽値として評価されます。たとえば、数値の0は真偽値に変換するとfalseになるので、次のif文のブロックは絶対に実行されません(デッドコード)。
条件分岐

整数の偶奇判別プログラムを書け。
条件分岐

if/else文を用いる場合は、
条件分岐

または
条件分岐

条件演算子を用いる場合は、
条件分岐

または
条件分岐

または
条件分岐

または
条件分岐

など。
条件分岐

[から]までは省略可能を意味し、この場合は「else節は省略可能」を意味します。
条件分岐

switch文( switch statement )は、if/else文を何個もつらねて書くことが冗長な場合にもちいられます。
条件分岐

これはswitch文を使って次のように書くことができます。
条件分岐

必ずcase節の最後にbreak文を書くのを忘れないでください。 なお、たいていのケースではswitch文を使わなくても、連想配列を応用したディスパッチテーブルで事足ります。 switch文はここぞというときに使ってください。
条件分岐

switch文に与えられた式に一致するcase句の値を上から順に厳密一致厳密比較演算子で評価され、true を返すcase句に対応する文が実行され、break文などの中断制御文が見つからない限り次の文が実行されます。
条件分岐

いよいよループの登場です。while文( while statement )は条件が真である間、文を実行しつづけます。
条件分岐

10回ループが回るとiが10になり、i < 10がfalseになるのでループを抜けます。 このようにwhile文はi < 10がtrueである間、ブロックを実行しつづけます。 このようにして、プログラムは0から9までの数字を表示します(10に達するとループから脱出します)。
条件分岐

while文に与えられた式が truthy の間、繰り返し文を実行します。
条件分岐

do-while文( do-while statement )は、まずdo文のブロックを実行し、次にwhile文の条件式を確認してループします。次のプログラムは0から9までの数字を表示します。
条件分岐

まず文を無条件に実行し、while文に与えられた式が truthy の間、繰り返し文を実行します。
条件分岐

for文( for statement )は、いわゆるC言語スタイルのfor文です。 let i = 0のような変数の初期化と、i < 10のような条件式と、i++のような変数の更新を一行で書く制御構文です。 JavaScriptではwhile文やdo-while文はあまり使われませんが、for文はループを簡潔に書けるので非常に重宝します。 次のプログラムは0から9までの数字を表示します。
条件分岐

結果、i < 10がtruthyである間、ブロックの実行と変数の更新が行われます。
条件分岐

ブロック文は文の特殊なケースで単文でももちろん有効です。
条件分岐

後置インクリメント演算子は変数の値を1増やし、増やす前の値を返すので、次のように書けます。
条件分岐

このような書き方を好み人もいますが、文意を汲むなら...
条件分岐

のような、iterableオブジェクトのイテレーションメソッドを使うことも検討に値します。
条件分岐

for-in 文は、オブジェクトのプロパティのうちキーが文字列で列挙可能なもの全てに反復処理を行います。
条件分岐

for-of 文は、Iterableオブジェクト(たとえば String Array や NodeList)に対して、反復処理を行います。
条件分岐

Iterableでないオブジェクトが右の項に与えらてた場合、TypeError が throw されます。
条件分岐

for await-of 文は、非同期関数用の for-of です。
条件分岐

for each-in 文はJavaScript 1.6でECMAScript for XML(E4X)のサポートの一環で導入されましたが、E4Xの廃止を受け非推奨を経て廃止されました。 下のプログラム例もモダンブラウザでは SyntaxError となります。for ... of 文を使うようにして下さい。 JavaScript 1.6で追加されたfor each-in文はオブジェクトの値を順番に取り出して反復処理します。
条件分岐

反復処理中に、反復を中断したり、「次の」反復にすぐに移りたい場合があります。 このようなときは、反復制御構文を使います。
条件分岐

break文( break statement )はループまたはswitch文を途中で抜けます。 次のプログラムはiが5になった時点でfor文のループを抜けるので、0から4までの数字を表示します。
条件分岐

continue文( continue statement )はループを次に進めます。 次のプログラムは0から9までの数字のうち3の倍数だけ表示します。
条件分岐

ラベルを使用すると深いループを一気に抜けることができます。
条件分岐

曖昧さを持ち込むためwith 文の使用は推奨されない。 また、strictモードでは SyntaxError となります。
条件分岐

with文の用途は、実際のコードを見ると良い。次の2つの関数は同じ意味です。
条件分岐

この様に、あらかじめオブジェクトをwith文で指定することで、それに続くブロックの間では、オブジェクトの名前を省略することが出来ます。 これは Pascal などの言語から移入されたものです。 with は、with により修飾名が省略されたことにより識別子に曖昧さを持ち込む事で、意図しないプロパティが使われるなど問題を生じることが知られており、with 文の使用は推奨されない。 また、strictモードでは SyntaxError となります。