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 文