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 文の動作原理
- まず、switch 式の値が計算されます。
- 次に、その値が各 case 文の値と比較されます。
- 一致する値が見つかった場合、その case 文に対応するコードブロックが実行されます。
- 一致する値が見つからなかった場合、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文の外からはアクセスできません。