JavaScriptのswitch文:多数の分岐をシンプルに書く

if文に続いて、もう1つの条件分岐「switch文」を学びました。switch文は、多数の値と比較して処理を分岐したいときに便利です。

switch文とは

switch文は、1つの値を複数の値と比較して、一致する場合の処理を実行する構文です。

構文:

switch (条件の値) {
  case 値1:
    条件の値が値1と等しい時の処理
    break;
  case 値2:
    条件の値が値2と等しい時の処理
    break;
  default:
    どの値とも一致しない時の処理
}

switch文の基本例

const day = '月曜';

switch (day) {
  case '月曜':
    console.log('週の始まり');
    break;
  case '金曜':
    console.log('週末まであと少し');
    break;
  case '土曜':
  case '日曜':
    console.log('休日');
    break;
  default:
    console.log('平日');
}
// 週の始まり

breakの重要性

break は、switch文を終了する命令です。

break がないと、一致した処理の後も、そのまま次の処理が実行されてしまいます。

breakがない場合の問題

const score = 'B';

switch (score) {
  case 'A':
    console.log('優秀');
    // breakがない
  case 'B':
    console.log('良好');
    // breakがない
  case 'C':
    console.log('普通');
    break;
}
// 良好
// 普通(breakがないので次も実行される)

case 'B' に一致した後、break がないため case 'C' の処理も実行されてしまいます。

breakがある場合(正しい書き方)

const score = 'B';

switch (score) {
  case 'A':
    console.log('優秀');
    break;
  case 'B':
    console.log('良好');
    break;
  case 'C':
    console.log('普通');
    break;
}
// 良好(これだけ実行される)

重要: 各 case の最後には必ず break; を書くことが基本です。

複数の値を1つの処理にまとめる

break を意図的に省略することで、複数の値に対して同じ処理を実行できます。

const day = '土曜';

switch (day) {
  case '土曜':
  case '日曜':
    console.log('休日');
    break;
  default:
    console.log('平日');
}
// 休日

case '土曜': には break がないため、そのまま case '日曜': の処理に進みます。結果として、土曜でも日曜でも「休日」と表示されます。

default:どのcaseにも一致しない場合

default は、どの case とも一致しないときに実行される処理です。

const fruit = 'ぶどう';

switch (fruit) {
  case 'りんご':
    console.log('赤い果物');
    break;
  case 'バナナ':
    console.log('黄色い果物');
    break;
  default:
    console.log('その他の果物');
}
// その他の果物

default は省略可能ですが、予期しない値に対する処理を書いておくと安全です。

if文とswitch文の使い分け

if文が適している場合

  • 範囲の判定(以上・以下など)
  • 複雑な条件(&&|| を使う)
const age = 25;

// if文が適している
if (age >= 18 && age < 65) {
  console.log('成人');
}

switch文が適している場合

  • 特定の値との一致判定が多い
  • 分岐が多い(3つ以上)
const color = '赤';

// switch文が適している
switch (color) {
  case '赤':
    console.log('情熱');
    break;
  case '青':
    console.log('冷静');
    break;
  case '黄':
    console.log('明るい');
    break;
  default:
    console.log('その他');
}

Pythonとの比較

Pythonには switch 文がありません(Python 3.10以降は match 文がありますが、使い方が異なります)。

# Python(switch文はない。if-elifで書く)
day = '月曜'

if day == '月曜':
    print('週の始まり')
elif day == '金曜':
    print('週末まであと少し')
else:
    print('平日')
// JavaScript(switch文がある)
const day = '月曜';

switch (day) {
  case '月曜':
    console.log('週の始まり');
    break;
  case '金曜':
    console.log('週末まであと少し');
    break;
  default:
    console.log('平日');
}

JavaScriptでは、多数の値を比較する場合は switch 文を使うとコードがスッキリします。

気づき:PythonとJavaScriptの文法の違い

今回の学習を通じて、PythonとJavaScriptの文法の違いを改めて実感しました。

主な違い

項目PythonJavaScript
変数の宣言不要let / const が必要
セミコロン不要必要(1つの処理ごと)
ブロックの表現インデントのみ{} が必要
switch文なし(if-elif)あり

特に、JavaScriptでは1つの処理ごとにセミコロンが必要という点が、Pythonとの大きな違いです。

今日の学びのポイント

  • switch文: 1つの値を複数の値と比較
  • case 値:: 一致する値を指定
  • break;: switch文を終了(必須)
  • break がないと次の処理も実行される(注意)
  • default:: どのcaseにも一致しない場合
  • 使い分け: 特定値との一致判定が多い → switch、範囲判定 → if

switch文は、特定の値と比較する分岐が多いときに威力を発揮します。if文とswitch文を適切に使い分けられるようになりましょう。

コメント