無理しないでゆっくり休んでね!

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文の方が読みやすく、管理しやすい場合があります。

コメント

タイトルとURLをコピーしました