JavaScriptのswitch文

JavaScript switch 文

JavaScript switch 文详解: 高効率な多岐分岐を実現する方法

この文章では、JavaScript の switch 文について詳しく解説していきます。構文、動作原理、適用场景、他の条件文との比較などを含め、豊富なサンプルコードも交えながら、分かりやすく説明します。これを最後まで読めば、switch 文をマスターできるはずです。

---

1. switch 文とは?

  • switch 文は、**多岐分岐**を実現するための文であり、式の値に基づいて、複数のコードブロックの中から一つを選んで実行することができます。
  • 複数の if else 文を使うよりも、switch 文の方が、多岐分岐を扱う際に簡潔で分かりやすく、場合によっては実行効率も高くなります。

2. switch 文の構文


<script>
switch (expression) {
  case value1:
    // expression === value1 の場合に実行されるコードブロック
    break;
  case value2:
    // expression === value2 の場合に実行されるコードブロック
    break;
  // ... 複数の case 文が続く
  default:
    // expression がどの case の値にも一致しない場合に実行されるコードブロック
}
</script>
  • **expression**: 値を計算するための式であり、その結果は各 case の値と比較されます。
  • **case value**: 特定の値を指定します。expression の値と一致した場合、その case に対応するコードブロックが実行されます。
  • **break**: オプションの文であり、switch 文を抜け出すために使用されます。break 文がない場合、コードは次の case にも実行されてしまいます。
  • **default**: オプションの文であり、expression がどの case の値にも一致しない場合に実行されます。

3. switch 文の動作原理

  1. まず、switch 式の値が計算されます。
  2. 次に、その値が各 case 文の値と比較されます。
  3. 一致する値が見つかった場合、その case 文に対応するコードブロックが実行されます。
  4. 一致する値が見つからなかった場合、default 文に対応するコードブロックが実行されます (default 文が存在する場合)。

4. break 文の役割

  • break 文は、**switch 文の実行を終了させる**ために使用されます。break 文がない場合、コードは次の case にも実行されてしまいます。

5. switch 文の適用场景

  • 変数や式の値に基づいて、複数のコードブロックの中から一つを選んで実行したい場合。
  • **多岐分岐**を行い、それぞれの条件に対して独立したコードブロックを実行したい場合。

6. switch 文と if else 文の比較

特徴 switch 文 if else 文
構文 より簡潔で、多岐分岐に適しています。 より柔軟で、様々な条件分岐に適しています。
効率 場合によっては効率が高くなります。 場合によっては効率が低くなります。
可読性 条件が多い場合は可読性が高くなります。 条件が少ない場合は可読性が高くなります。
適用场景 多岐分岐で、それぞれの条件に対して独立したコードブロックを実行する場合。 様々な条件分岐、複雑なロジックを含む条件分岐など。

7. switch 文の例


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

switch (day) {
  case 0:
    dayName = "日曜日";
    break;
  case 1:
    dayName = "月曜日";
    break;
  case 2:
    dayName = "火曜日";
    break;
  case 3:
    dayName = "水曜日";
    break;
  case 4:
    dayName = "木曜日";
    break;
  case 5:
    dayName = "金曜日";
    break;
  case 6:
    dayName = "土曜日";
    break;
  default:
    dayName = "不明";
}

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

8. まとめ

switch 文は、JavaScript において効率的で簡潔な多岐分岐を実現するための文であり、コードの可読性と保守性を向上させることができます。

Q&A

Q1: switch文でbreak文がない場合はどうなるのでしょうか?

A1: break文がない場合、一致したcase文の後のコードだけでなく、それ以降のcase文のコードもすべて実行されてしまいます。これを「フォールスルー」と呼びます。

Q2: switch文とif else文のどちらを使うべきでしょうか?

A2: 状況によります。単純な多岐分岐で可読性を重視する場合はswitch文、複雑な条件分岐や範囲指定が必要な場合はif else文が適しています。

Q3: switch文の中で変数を宣言することはできますか?

A3: はい、可能です。ただし、ブロックスコープを意識する必要があります。case文内で変数を宣言する場合、その変数はそのcase文内でのみ有効となります。他のcase文やswitch文の外からはアクセスできません。