JavaScriptの条件分岐(switch文)について

JavaScriptの条件分岐(switch文)について

switch文の概要

JavaScriptのswitch文は、複数の条件を効率的に評価するための構文です。これは、長いif...else if文をシンプルにまとめるのに役立ちます。switch文では、1つの式(値)を評価し、その値と一致するcaseブロックを実行します。

基本的な構文


switch (式) {
    case 値1:
        // 値1と一致する場合の処理
        break;
    case 値2:
        // 値2と一致する場合の処理
        break;
    default:
        // どのcaseとも一致しない場合の処理
}
    

ポイント:

  • breakは、実行を中断しswitch文を終了します。これがないと次のcaseが実行されます(フォールスルー)。
  • defaultはオプションですが、指定することを推奨します。一致するcaseがない場合に実行されます。

例1: 簡単な条件分岐


const day = "Monday";

switch (day) {
    case "Monday":
        console.log("今日は月曜日です。");
        break;
    case "Tuesday":
        console.log("今日は火曜日です。");
        break;
    default:
        console.log("その他の曜日です。");
}
    

上記のコードでは、dayが”Monday”の場合、”今日は月曜日です。”が出力されます。

フォールスルーの挙動

breakがない場合、次のcaseも実行されます。これをフォールスルーと言います。


const fruit = "Apple";

switch (fruit) {
    case "Apple":
        console.log("Apple is red.");
    case "Banana":
        console.log("Banana is yellow.");
    default:
        console.log("Unknown fruit.");
}
    

出力結果:

  • Apple is red.
  • Banana is yellow.
  • Unknown fruit.

フォールスルーを防ぐには、breakを必ず使用します。

型の厳密さ

switch文では厳密等価演算子(===)が使用されるため、型の一致も重要です。


const value = "1";

switch (value) {
    case 1:
        console.log("数値の1です。");
        break;
    case "1":
        console.log("文字列の1です。");
        break;
    default:
        console.log("一致しません。");
}
    

出力結果: 文字列の1です。

例2: 複雑な条件

複数のcaseで同じ処理を行いたい場合は、caseを連続させることで実現できます。


const grade = "B";

switch (grade) {
    case "A":
    case "B":
        console.log("優秀な成績です。");
        break;
    case "C":
        console.log("普通の成績です。");
        break;
    default:
        console.log("改善の余地があります。");
}
    

上記では、gradeが”A”または”B”の場合に”優秀な成績です。”が出力されます。

defaultなしの例

時にはdefaultを省略することも可能です。ただし、一致しない場合の挙動が不明確になるため注意が必要です。


const color = "blue";

switch (color) {
    case "red":
        console.log("赤です。");
        break;
    case "green":
        console.log("緑です。");
        break;
}
    

出力: 何も出力されません。

if…else ifとの比較

switch文は、複数の値を比較する場合にif...else ifよりも読みやすいコードを提供します。ただし、範囲比較には適しません。


// switch文では不可能な範囲比較
const score = 85;

if (score >= 90) {
    console.log("Aランク");
} else if (score >= 80) {
    console.log("Bランク");
} else {
    console.log("その他のランク");
}
    

上記のような範囲比較はif...else ifの方が適しています。

まとめ

switch文は、複数の値の一致を効率よく処理する強力なツールです。適切に使用することで、コードの可読性とメンテナンス性を向上させることができます。特に、値が明確に分かれている場合に有効です。ただし、複雑な条件や範囲比較にはif...else ifが適している場合があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です