1. switch文とは?
switch 文は、ある値をいくつかのパターン(条件)と比べて、どの処理を実行するかを決める 条件分岐 の書き方です。if 文でも同じことはできますが、「値によって処理を分けるとき」にとてもスッキリ書ける方法です。
2. 基本の書き方
switch (値) {
case 値1:
// 値が値1のときに実行する処理
break;
case 値2:
// 値が値2のときに実行する処理
break;
default:
// どれにも当てはまらないときに実行する処理
}
JavaScriptポイント
switchの後ろにある「値」をチェックします。case 値:がその値と一致するか比べます。- 一致した
caseの処理を実行します。 breakは 「ここでswitch文を終わる」 ために必要です。defaultは 「どのcaseにも当てはまらなかった場合」 の処理です。なくてもOK。
3. 例題 1:都道府県によってメッセージを表示
let prefecture = 'Osaka';
switch (prefecture) {
case 'Tokyo':
console.log('住所は東京都です');
break;
case 'Osaka':
console.log('住所は大阪府です');
break;
default:
console.log('住所はその他です');
}
JavaScript解説
prefectureの値は'Osaka'です。case 'Osaka':が一致したので、その処理が実行されます。- 結果:
住所は大阪府ですと表示されます。 breakがあるので、他のcaseは実行されません。
4. breakを忘れるとどうなる?
let prefecture = 'Osaka';
switch (prefecture) {
case 'Tokyo':
console.log('東京都です');
case 'Osaka':
console.log('大阪府です');
case 'Fukuoka':
console.log('福岡県です');
default:
console.log('その他です');
}
JavaScript解説
prefectureは'Osaka'。'Osaka'のcaseに到達すると、その処理から 下のすべてのcaseも実行されてしまいます。- 結果:
大阪府です
福岡県です
その他です
これを 「フォールスルー」 と言います。
必要な場合にだけ使い、基本はbreakを書きましょう。
5. 複数の値で同じ処理をしたい場合
let month = '8月';
switch (month) {
case '8月':
case '八月':
case 'August':
console.log('正解です');
break;
default:
console.log('不正解です');
}
JavaScript解説
monthが'8月'、'八月'、または'August'のどれかなら「正解です」を表示。- 複数の
caseを連続させてbreakは最後だけでOK。
6. 初心者向けポイントまとめ
switchは 値による条件分岐 に便利。breakを書かないと下のcaseも実行される(フォールスルー)。defaultはすべてのcaseに当てはまらない場合の処理。- 同じ処理を複数の値に適用したいときは、
caseを並べるだけ。
練習問題
次のコードの出力は何になるでしょう?
let fruit = 'apple';
switch (fruit) {
case 'banana':
console.log('バナナです');
break;
case 'apple':
console.log('りんごです');
case 'orange':
console.log('オレンジです');
break;
default:
console.log('その他のフルーツです');
}
JavaScriptステップごとの解説
fruitの値は'apple'。switch(fruit)で'apple'に一致するcaseを探します。case 'apple':が一致。ここから処理が始まります。
console.log('りんごです'); // まず「りんごです」を表示
JavaScript- breakがないので、次の
case 'orange':も処理されます。
console.log('オレンジです'); // ここも実行
break; // ここでswitch文が終了
JavaScriptdefaultは実行されません(breakでswitch文が終わったため)。
出力結果
りんごです
オレンジです
ポイントまとめ
breakがないと 次のcaseも順番に実行される(フォールスルー)。- フォールスルーは場合によって便利ですが、基本的には 必要な箇所で break を書く のが安全。
- 複数の値で同じ処理をしたい場合だけ、意図的にフォールスルーを使えます。
では、さきほどの問題を 2パターンに書き直して比較 してみます。
① 正しく break を入れたバージョン
let fruit = 'apple';
switch (fruit) {
case 'banana':
console.log('バナナです');
break;
case 'apple':
console.log('りんごです');
break; // ここで止める
case 'orange':
console.log('オレンジです');
break;
default:
console.log('その他のフルーツです');
}
JavaScript出力結果
りんごです
解説
fruitが'apple'なので'apple'のcaseが実行されます。breakがあるので、ここでswitch文は終了。他のcaseは実行されません。
② 複数の値で同じ処理をするバージョン
let fruit = 'apple';
switch (fruit) {
case 'apple':
case 'red apple':
case 'green apple':
console.log('りんごです');
break;
case 'banana':
console.log('バナナです');
break;
default:
console.log('その他のフルーツです');
}
JavaScript出力結果
りんごです
解説
fruitが'apple'、'red apple'、'green apple'のいずれかなら、同じ処理を行う。caseを並べて書くことで 1つの処理にまとめられる。breakは最後に1回だけ書けばOK。
まとめ
| ポイント | 正しいbreak版 | 複数値まとめ版 |
|---|---|---|
| フォールスルー | なし(breakで防ぐ) | 意図的に使う |
| 可読性 | シンプル | 複数値をまとめられる |
| 出力 | 1つだけ | 条件に合う値で同じ処理 |

