前書き

条件付きステートメントは、すべてのプログラミング言語で最も有用で一般的な機能です。 「https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-javascript[JavaScriptで条件文を記述する方法]」では、「+ if 」、「 else + および + else if + `キーワードを使用して、さまざまな条件に基づいてプログラムのフローを制御します。これは、JavaScriptでは多くの場合ユーザー入力の結果です。

JavaScriptには、「+ if …​ else」に加えて、「+ switch」ステートメントと呼ばれる機能があります。 + switch +`は、複数の考えられるケースに対して式を評価し、一致するケースに基づいて1つ以上のコードブロックを実行するタイプの条件ステートメントです。 `+ switch`ステートメントは、多くの + else if`ブロックを含む条件ステートメントに密接に関連しており、しばしば交換可能に使用できます。

このチュートリアルでは、 + switch +`ステートメントの使用方法、および関連キーワード `+ case ++ break +、および `+ default `の使用方法を学習します。 最後に、 ` switch`ステートメントで複数のケースを使用する方法を説明します。

スイッチ

`+ switch `ステートメントは式を評価し、一致するケースの結果としてコードを実行します。 最初は少し威圧的に見えますが、基本的な構文は ` if `ステートメントの構文に似ています。 常に ` switch(){} +`で記述され、テストする式を含む括弧と、実行する潜在的なコードを含む中括弧が含まれます。

以下は、2つの「+ case 」ステートメントと「 default 」として知られるフォールバックを含む「 switch +」ステートメントの例です。

switch (expression) {
   case x:
       // execute case x code block
       break;
   case y:
       // execute case y code block
       break;
   default:
       // execute default code block
}

上記のコードブロックのロジックに従って、これは発生するイベントのシーケンスです。

  • 式が評価されます

  • 最初の + case +`である `+ x +`は、式に対してテストされます。 一致する場合、コードが実行され、 `+ break`キーワードが + switch`ブロックを終了します。

  • 一致しない場合、「+ x 」はスキップされ、「 y 」の場合は式に対してテストされます。 ` y `が式と一致する場合、コードは実行され、 ` switch +`ブロックから抜けます。

  • いずれのケースも一致しない場合、 `+ default +`コードブロックが実行されます。

上記の構文に従って、 `+ switch `ステートメントの実用的な例を作成しましょう。 このコードブロックでは、 ` new Date()`メソッドで現在の曜日を見つけ、 ` getDay()`で現在の日に対応する数値を出力します。 「+1」は月曜日を表し、「+ 7+」は日曜日を表します。 まず、変数を設定します。

const day = new Date().getDay();

`+ switch `を使用して、曜日ごとにコンソールにメッセージを送信します。 プログラムは上から下に順番に実行され、一致するものを探します。一致するものが見つかると、「 break 」コマンドは「 switch +」ブロックがステートメントを評価し続けるのを停止します。

week.js

// Set the current day of the week to a variable, with 1 being Monday and 7 being Sunday
const day = new Date().getDay();

switch (day) {
   case 1:
       console.log("Happy Monday!");
       break;
   case 2:
       console.log("It's Tuesday. You got this!");
       break;
   case 3:
       console.log("Hump day already!");
       break;
   case 4:
       console.log("Just one more day 'til the weekend!");
       break;
   case 5:
       console.log("Happy Friday!");
       break;
   case 6:
       console.log("Have a wonderful Saturday!");
       break;
   case 7:
       console.log("It's Sunday, time to relax!");
       break;
   default:
       console.log("Something went horribly wrong...");
}
Output'Just one more day 'til the weekend!'

このコードは木曜日にテストされ、「+ 4+」に対応するため、コンソールの出力は「週末まであと1日だけ!」 コードをテストする曜日によって、出力は異なります。 エラーが発生した場合に実行するために、最後に `+ default `ブロックを含めました。この場合は、曜日が7日しかないため、これは発生しません。 たとえば、月曜日から金曜日までの結果のみを印刷し、週末に ` default +`ブロックに同じメッセージを含めることもできます。

各ステートメントで「+ break」キーワードを省略した場合、他の「+ case」ステートメントはどれも真と評価されませんでしたが、プログラムは最後に達するまでチェックを続けていました。 プログラムをより速く、より効率的にするために、 `+ break +`を含めます。

スイッチ範囲

上記の例のような単一の値ではなく、 `+ switch `ブロック内の値の範囲を評価する必要がある場合があります。 これを行うには、式を「 true 」に設定し、各「 case +」ステートメント内で操作を実行します。

これを理解しやすくするために、使い慣れた例を使用します。 https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-javascript [条件文]チュートリアルでは、数値スコアを取得して変換する簡単なグレーディングアプリを作成しました次の要件を備えたレターグレードまで。

  • 90以上のグレードは* A *です

  • 80から89のグレードは* B *です

  • 70から79のグレードは* C *です

  • 60から69のグレードは* D *です

  • 59以下のグレードは* F *です

これで `+ switch`ステートメントとして記述できます。 範囲をチェックしているため、各 `+ case `で操作を実行して、各式が ` true `に評価されているかどうかをチェックし、 ` true +`の要件が満たされたらステートメントから抜け出します。

grades.js

// Set the student's grade
const grade = 87;

switch (true) {
   // If score is 90 or greater
   case grade >= 90:
       console.log("A");
       break;
   // If score is 80 or greater
   case grade >= 80:
       console.log("B");
       break;
   // If score is 70 or greater
   case grade >= 70:
       console.log("C");
       break;
   // If score is 60 or greater
   case grade >= 60:
       console.log("D");
       break;
   // Anything 59 or below is failing
   default:
       console.log("F");
}
Output'B'

この例では、評価される括弧内の式は「+ true 」です。 つまり、「 true i」と評価される「+ case」はすべて一致します。

「+ else if」と同様に、「+ switch」は上から下に評価され、最初の真の一致が受け入れられます。 したがって、「+ grade 」変数は「+87」であり、したがってCおよびDについても「+ true +」と評価されますが、最初の一致はBであり、これが出力になります。

複数のケース

複数の `+ case `の出力が同じになるコードに遭遇する場合があります。 これを達成するために、コードの各ブロックに複数の ` case +`を使用できます。

これをテストするために、今月を適切な季節に一致させる小さなアプリケーションを作成します。 まず、 `+ new Date()`メソッドを使用して現在の月に対応する数値を見つけ、それを ` month +`変数に適用します。

const month = new Date().getMonth();

+ new Date()。getMonth()+`メソッドは、 `+ 0 +`から `+ 11 +`までの数値を出力します。+ 0 + は1月、 + 11 + `は12月です。 この発行時点で、月は9月で、「+ 8+」に対応します。

このアプリケーションでは、簡単にするために次の仕様で4つの季節を出力します。

  • :1月、2月、3月

  • :4月、5月、6月

  • :7月、8月、9月

  • :10月、11月、12月

以下にコードを示します。

seasons.js

// Get number corresponding to the current month, with 0 being January and 11 being December
const month = new Date().getMonth();

switch (month) {
   // January, February, March
   case 0:
   case 1:
   case 2:
       console.log("Winter");
       break;
   // April, May, June
   case 3:
   case 4:
   case 5:
       console.log("Spring");
       break;
   // July, August, September
   case 6:
   case 7:
   case 8:
       console.log("Summer");
       break;
   // October, November, December
   case 9:
   case 10:
   case 11:
       console.log("Autumn");
       break;
   default:
       console.log("Something went wrong.");
}

コードを実行すると、上記の仕様に基づいて現在のシーズンを特定する出力を受け取ります。

OutputSummer

公開時の現在の月は「8」であり、これは「+ “Summer” 」シーズン出力を伴う「 case +」ステートメントの1つに対応していました。

結論

この記事では、「+ switch 」ステートメント、https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-javascript [conditonal statement]を評価しました。一致する結果に基づいて異なる値を表現および出力します。 範囲と複数の「 case」ステートメントを使用して、「+ switch」ステートメントを確認しました。

`+ switch +`の詳細については、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch [Mozilla Developer Network]で確認できます。