はじめに
条件分岐は、あらゆるプログラミング言語において最も重要な制御フローの1つです。これらは、特定の条件に基づいて実行の動作を決定するために使用されます。Javascriptでは、条件ブロックは if, else if, else、および switch文を使用して構築できます。
The switch文は、式に対するいくつかの考えられる結果に対して決定を行うことで、制御フローを読みやすくします。一致するユースケースに応じて、1つ以上のコードブロックを実行できます。 switch制御は、 else if文に似ています。しかし、 switchは構文的に読みやすくなっています。また、複数の考えられる結果があるシナリオにも最適です。
このチュートリアルでは、私たちは switch文に焦点を当て、複雑な制御構造を構築するために実装します。また、制御のフローを指示するために、switchブロック内で break , case、および default statements within the switch block to direct the flow of control.
Switch文の使用
The switch文は、変数の値を考えられる式と比較することによって機能します。そして、結果に一致するコードブロックを実行します。 switch 文の構文は、 if文と変わりません。簡単に言うと、switch文の構文は次のように記述されます。
|
1 2 |
switch() { } |
以下は switch文の例です。これには、2つのケース(または2つの考えられる結果)と、 defaultキーワードで指定されたフォールバックオプションがあります。このフォールバックオプションは、実行が終了したとき、または一致するケースが見つからないときに実行されます。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // 式がcase xに一致したときにこのコードブロックを実行します break; case y: // 式がcase yに一致したときにこのコードブロックを実行します break; default: // デフォルトブロック } |
上記のコードは次のように実行されます。
-
まず、式が評価されます。
-
次に、式の結果が case xと比較されます。値が一致する場合、 case x の下のコードブロックが実行されます。
-
式が case xに一致しない場合、次に case yが比較されます。一致するものが見つかった場合、 case y のコードが実行されます。
-
最後に、 case xも case yも一致しない場合、 defaultコードが実行され、制御は switch ブロックから抜けます。
動作例
To understand the switch文を理解するために、動作例を見てみましょう。現在の日付の曜日値を取得するために、 getDay()メソッドを、Javascriptの Dateオブジェクトで使用します。この値は数値であり、 が日曜日、最大で 6が土曜日を表します。この値を評価して、何曜日であるかを判断します。
|
1 |
const day = new Date().getDay(); |
次に、この値を switch文に渡します。 switch文は上から下へと実行され、ケースと一致させて何曜日であるかを判断します。ケースが見つかると、 breakコマンドが switch ブロックの評価の継続を停止します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// 現在の曜日を変数に設定します。0が日曜日、6が土曜日です。 const day = new Date().getDay(); switch (day) { case 0: console.log("日曜日です"); break; case 1: console.log("月曜日です!"); break; case 2: console.log("火曜日です。"); break; case 3: console.log("もう水曜日!"); break; case 4: console.log("木曜日です"); break; case 5: console.log("ハッピーフライデー!"); break; case 6: console.log("土曜日です!"); break; default: console.log("一致するケースがありません") } |
Depending on the value returned from the getDate() メソッドから返される値に応じて、上から順に1つずつケースに対してテストされます。出力はコードを実行した曜日によって異なります。default コードブロックは、どのケースにも一致しない場合のシナリオを処理するために配置されています。ただし、このコードでは曜日の数は有限であるため、default が呼び出されることはありません。
The break 文は、ケースが一致するとそれ以降のケースは一致判定されず、制御が switch 文から抜けるようにします。これにより、プログラムの効率が向上し、処理が高速になります。
Switch文における範囲の判定
これまでは非常に単純なユースケースを見てきました。しかし、単一の値ではなく、値の範囲に対してテストする必要がある場合もあります。これは、式を true に設定し、各 case 文の中で演算を行うことで実現できます。
例を使ってこのユースケースを説明しましょう。数値を取得し、以下の分類を使用して成績に変換します。
-
90以上の成績は A
-
80から89の成績は B
-
70から79の成績は C
-
60から69の成績は D
-
59以下の成績は F
これらのステートメントを switch 文として記述します。以下はそのためのコードです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// 生徒の成績 const grade = 87; switch (true) { // スコアが90以上の場合 case grade >= 90: console.log("A"); break; // スコアが80以上の場合 case grade >= 80: console.log("B"); break; // スコアが70以上の場合 case grade >= 70: console.log("C"); break; // スコアが60以上の場合 case grade >= 60: console.log("D"); break; // 59以下は不合格 default: console.log("F"); } |
上記のコード例とは異なり、ここでは括弧内の式を次のように設定しています。 true。したがって、trueの値に一致するcase文が実行されます。ちょうど else if文と同じように、指定された値に一致する最初の文が実行されます。ここでの出力はBになります。たとえCやDも式に一致しているとしてもです。
複数のケース
同じコードブロックを持つ複数のケースを設定することも可能です。これは、 または条件( if文におけるもの)に似ています。このようなシナリオでは、コードの各ブロックに対して複数のケースを指定できます。
この概念を説明するために、年の月を使用した例を示します。これらの月を1年の季節に分類します。まず、新しい Date()メソッドを使用して現在の月に対応する数値を取得し、それをmonth変数に適用します。 Date().getMonth()メソッドは、 0 から 11までの数値を返します。その際、 0が1月、11が12月になります。
以下の仕様を使用して分類します。
-
冬:1月、2月、3月
-
春:4月、5月、6月
-
夏:7月、8月、9月
-
秋:10月、11月、12月
コードは以下のようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const month = new Date().getMonth(); switch (month) { // 1月、2月、3月 case 0: case 1: case 2: console.log("Winter"); break; // 4月、5月、6月 case 3: case 4: case 5: console.log("Spring"); break; // 7月、8月、9月 case 6: case 7: case 8: console.log("Summer"); break; // 10月、11月、12月 case 9: case 10: case 11: console.log("Autumn"); break; default: console.log("Something went wrong."); } |
上記のコードが実行されると、月に応じて、季節の名前がコンソールに出力されます。
まとめ
このチュートリアルでは、JavaScriptアプリケーションで switch文を使用する方法を説明しました。また、defaultキーワードとともに、範囲や複数のケースに switch文を適用しました。JavaScriptについてさらに詳しく学びたい場合は、以下のチュートリアルを参照してください。
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。