Switch文とif文のどちらを使うべきですか?

switch文とif文のどちらを使うべきですか?

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 文