
switch文とif文のどちらを使うべきですか?
JavaScriptで条件分岐を行う際に、「switch文」と「if文」のどちらを使えば良いのか迷うことはありませんか?どちらも条件によって処理を分岐させることができますが、それぞれに得意な状況があります。この記事では、switch文とif文の特徴を比較し、状況に最適な構文を選択する方法を解説します。
if文: 柔軟な条件分岐
if文は、最も基本的な条件分岐の構文です。指定した条件式が真(true)の場合に、特定の処理を実行します。条件式が偽(false)の場合は、処理をスキップするか、else句を使用して別の処理を実行します。
例えば、「変数nの値が特定の値よりも大きい(小さい)ときにある処理を実行させたい」「複数の変数や条件を組み合わせて分岐させたい」場合はif文が向いています。
  <script>
    let n = 10;
    if (n > 5) {
      console.log("nは5より大きいです");
    } else if (n < 5) {
      console.log("nは5より小さいです");
    } else {
      console.log("nは5です");
    }
  </script>
  switch文: 値による分岐を簡潔に記述
switch文は、変数の値が一致するcase句の処理を実行します。複数の値に対して処理を分岐させる場合に、if文よりも簡潔に記述できます。「変数が3つ以上の値をとり、値によって処理を振り分けたい」場合はswitch文を用いると、簡潔なプログラムが書けるでしょう。
  <script>
    let signal = "red";
    switch (signal) {
      case "red":
        console.log("止まれ");
        break;
      case "yellow":
        console.log("注意");
        break;
      case "blue":
      case "green":
        console.log("進め");
        break;
      default:
        console.log("無効な信号です");
    }
  </script>
  switch文とif文の使い分け
以下の表は、switch文とif文の特徴をまとめたものです。
| 特徴 | switch文 | if文 | 
|---|---|---|
| 条件の指定 | 変数と値の完全一致 | 柔軟な条件式 | 
| コードの簡潔さ | 複数の値による分岐に強い | 複雑な条件分岐に柔軟に対応 | 
| 処理の落ち方 | break文で明示的に制御 | 上から順に評価 | 
基本的には、上記の特徴を踏まえて、状況に応じて最適な方を選択しましょう。switch文は、変数の値が明確で、かつ複数の値による分岐を行う場合に有効です。一方、if文は、より複雑な条件式を扱う場合や、柔軟な条件分岐が必要な場合に適しています。
参考文献
関連QA
Q1: switch文でbreak文を省略することはできますか?
A1: はい、省略できます。ただし、break文を省略すると、次のcase句の処理も続けて実行されます。これを「フォールスルー」と呼びます。意図的にフォールスルーを利用する場合を除き、break文は必ず記述しましょう。
Q2: if文とswitch文は、どちらのパフォーマンスが良いですか?
A2: 一般的には、処理速度に大きな差はありません。ただし、分岐条件が非常に多い場合は、switch文の方が高速に動作する場合があります。パフォーマンスを重視する場合は、実際に計測して確認することをおすすめします。
Q3: switch文で、複数のcase句で同じ処理を実行するにはどうすれば良いですか?
A3: case句を連続して記述し、共通の処理をその下に記述します。例として、以下のコードでは、"blue"と"green"のどちらの場合も"進め"と出力されます。
  <script>
  let signal = "blue";
  switch (signal) {
    // ...
    case "blue":
    case "green":
      console.log("進め");
      break;
    // ...
  }
  </script>
  その他の参考記事:jquery if 文