JavaScript switch文
JavaScriptにおけるswitch文は、特定の値に応じてプログラムの挙動を変化させるための便利なツールです。
switch文の基本
JavaScriptのswitch文は、次のような形をしています。
switch (式) {
case 値1:
// 式が値1と等しいときに実行するコード
break;
case 値2:
// 式が値2と等しいときに実行するコード
break;
// 他のcase節をここに追加できます
default:
// 式がどの値とも等しくないときに実行するコード
}
英語の意味から見ると、switchは「スイッチ」、caseは「状況」、breakは「中断」、defaultは「デフォルト」となります。
以下の例では、変数fruit
の値によって異なるメッセージを表示します。
let fruit = "apple";
switch (fruit) {
case "apple":
console.log("りんごが選ばれました。");
break;
case "banana":
console.log("バナナが選ばれました。");
break;
case "orange":
console.log("オレンジが選ばれました。");
break;
default:
console.log("未知の果物が選ばれました。");
}
この例では、fruit
が”apple”、”banana”、”orange”のいずれかと等しい場合に対応するメッセージが表示され、それ以外の場合には”default”節が実行されます。
breakとdefault
switch文では、各case節の最後にbreak
文を書くのが一般的です。
break
がない場合、そのcase節の後にあるすべてのcase節が順に実行されてしまいます。この動作は意図的に利用することもありますが、通常は予期しない挙動を招くため、case節ごとにbreak
で終了することが推奨されます。
また、default
節は省略することができますが、式がどのcase節にも当てはまらない場合の挙動を定義したい場合には、default
節を用いると便利です。
少し複雑な例
// 利用者の年齢
let 年齢 = 18;
// 年齢によるチケット価格を決定する
switch (true) {
case (年齢 < 12):
console.log("子供料金300円です。"); // 12歳未満は子供料金
break;
case (年齢 >= 12 && 年齢 < 18):
console.log("学生料金500円です。"); // 12歳以上18歳未満は学生料金
break;
case (年齢 >= 18):
console.log("大人料金700円です。"); // 18歳以上は大人料金
break;
default:
console.log("正しい年齢を入力してください。"); // 年齢が正しく入力されていない場合
}
このコードは、利用者の年齢に基づいてチケット価格を決定します。switch
文を使用して、年齢に応じて異なる料金を適用します。
たとえば、年齢が18歳以上(年齢
の値が18以上)である場合、その利用者のチケット価格は大人料金700円になります。年齢が正しく入力されていない場合、エラーメッセージが出力されます。
switch文の効率的な使用
switch文は多くの条件を効率的にチェックするのに適しています。しかし、同じ値に対する複数のcase節を持つことはできません。そのような場合には、if-else文を使用するか、case節内で追加のチェックを行うことになります。
これを詳しく説明しましょう。
switch
文は、ある値に対して複数の可能性が存在し、それぞれに対して異なるアクションを行いたいときに使用します。その値とcase
節で指定した値を比較し、一致するcase
節のコードブロックを実行します。
したがって、一つのswitch
文の中で同じ値に対する複数のcase
節を持つことはできません。なぜなら、JavaScriptは一致する最初のcase
節を見つけたら、そのcase
節のコードブロックを実行し、それ以降のcase
節は無視するからです。
また、JavaScriptのswitch文は厳密等価性(===
)を用いて比較を行います。このため、型変換を伴う比較を行うことはできません。型変換を伴う比較を行いたい場合には、if-else文を使用することになります。
switchとifの違い
switch
文とif
文は、どちらも条件に基づいてプログラムの制御フローを制御しますが、使用方法と適用シーンが異なります。
条件の数
if
文は一つまたは複数の条件をテストします。
それに対してswitch
文は、一つの式の値に対する多くの可能性をテストします。
比較の型
if
文は真偽値に基づく比較を行います。つまり、条件がtrue
であればコードブロックを実行し、false
であればスキップします。
それに対してswitch
文は、式の値とcase
ラベルの値が厳密に等しいかどうかを比較します。
複雑さ
if
文は複雑な条件をテストするのに適しています。複数の条件を組み合わせたり、等価性だけでなく関係演算子(より大きい、より小さいなど)を使用したりできます。
それに対してswitch
文は、式の値が特定の値に等しいかどうかをテストします。そのため、等価性のテストが主なケースである場合、switch
文の方が読みやすく、管理しやすい場合があります。
コメント