JSのswitch文とif文の使い分けは?

 

if文とswitch文の違い

JavaScriptで条件分岐を行う際によく使われる構文として、「if文」と「switch文」があります。どちらも条件によって処理を分岐させるという点では同じですが、それぞれ特徴や用途が異なります。この記事では、if文とswitch文の違いを分かりやすく解説し、状況に応じた使い分けについて考察します。

if文とswitch文の基本

if文

if文は、指定した条件式が真 (true) の場合に、特定の処理を実行します。条件式が偽 (false) の場合には、処理は実行されません。また、else if や else を使うことで、複数の条件分岐を設定することも可能です。


<script>
  const score = 85;

  if (score >= 90) {
    console.log("秀");
  } else if (score >= 80) {
    console.log("優");
  } else if (score >= 70) {
    console.log("良");
  } else if (score >= 60) {
    console.log("可");
  } else {
    console.log("不可");
  }
</script>

switch文

switch文は、変数や式の値に基づいて、複数のケースの中から一致するものを探し、そのケースに対応する処理を実行します。各ケースには、caseキーワードと値を指定します。どのケースにも一致しない場合は、defaultキーワードで指定した処理が実行されます。


<script>
  const day = new Date().getDay();
  let dayOfWeek;

  switch (day) {
    case 0:
      dayOfWeek = "日曜日";
      break;
    case 1:
      dayOfWeek = "月曜日";
      break;
    case 2:
      dayOfWeek = "火曜日";
      break;
    case 3:
      dayOfWeek = "水曜日";
      break;
    case 4:
      dayOfWeek = "木曜日";
      break;
    case 5:
      dayOfWeek = "金曜日";
      break;
    case 6:
      dayOfWeek = "土曜日";
      break;
    default:
      dayOfWeek = "無効な日付";
  }

  console.log(`今日は${dayOfWeek}です。`);
</script>

if文とswitch文の使い分け

if文とswitch文はどちらも条件分岐を行うための構文ですが、それぞれ以下のような特徴があります。

特徴 if文 switch文
条件指定 真偽値 (true/false) で評価される条件式 変数や式の値との一致
処理の流れ 上から順に条件を評価し、最初に真となった条件に対応する処理を実行 値と一致するcaseにジャンプし、break文まで処理を実行
適したケース 複雑な条件式や、条件が2〜3個程度の分岐 単一の値に対して複数の分岐があり、処理内容が明確な場合

上記の特徴を踏まえ、以下のような基準で使い分けると良いでしょう。

  • 条件分岐が2つだけで、単純な比較を行う場合: if文の方が簡潔に記述できます。
  • 条件分岐が3つ以上になる場合、または同じ変数に対して複数の値で分岐する場合: switch文の方がコードが見やすく、処理の流れも分かりやすくなります。
  • 複雑な条件式を使う場合や、範囲指定などを行う場合: if文の方が柔軟に対応できます。

まとめ

if文とswitch文はどちらも条件分岐を行う上で重要な構文です。それぞれの特性を理解し、状況に応じて使い分けることで、より可読性が高く効率的なコードを書くことができます。

参考文献

* if...else - JavaScript | MDN * switch - JavaScript | MDN

QA

Q1: if文の中でswitch文を使うことはできますか?

A1: はい、可能です。if文の処理部分にswitch文を記述することができます。状況に応じて、if文とswitch文を組み合わせることで、より複雑な条件分岐を実現できます。

Q2: switch文でbreak文を省略するとどうなりますか?

A2: break文を省略すると、一致したcaseの処理を実行した後も、次のcaseの処理が実行されてしまいます。これを「フォールスルー」と呼びます。意図的にフォールスルーを利用する場合以外は、必ずbreak文を記述するようにしましょう。

Q3: if文とswitch文のどちらを使うべきか迷う場合はどうすれば良いですか?

A3: どちらを使っても問題ない場合は、コードの可読性を重視して判断しましょう。switch文はif文に比べて処理の流れが直感的で分かりやすい場合が多いですが、条件式が複雑になると逆に分かりにくくなることもあります。状況に応じて、よりシンプルで見やすいコードを選択することが大切です。

その他の参考記事:JavaScriptのswitch文