default を一言でいうと
default は、switch 文の中で使う 「どの case にも当てはまらなかったときの、最後の受け皿」 です。
if 文でいうと else にあたります。
「値が A のときはこれ、B のときはこれ、C のときはこれ。
それ以外のときは、とりあえずこれ。」
この「それ以外のとき」が default です。
ここが重要です。default は「想定外の値」や「どのパターンにも当てはまらない値」を扱う場所です。
「絶対来ないはず」と思っていても、実際には来ることがあるので、“最後の保険” として書いておくと、バグに気づきやすくなります。
switch 文の中での default の基本構造
一番シンプルな switch + default
まず、default 付きの基本的な switch 文を見てみましょう。
const color = "yellow";
switch (color) {
case "red":
console.log("赤です");
break;
case "blue":
console.log("青です");
break;
default:
console.log("赤でも青でもありません");
break;
}
JavaScriptこのコードの動きを追うと:
switch (color)→ 値は"yellow"case "red":→ 一致しないcase "blue":→ 一致しない- どの
caseにもマッチしなかったので、default:に進む "赤でも青でもありません"が表示される
もし color が "red" なら、default は実行されません。
「どの case にも一致しないときにだけ動く」 のが default です。
default にも break は付けるべき?
多くの場合、default の最後にも break; を付けます。
default:
console.log("赤でも青でもありません");
break;
JavaScriptdefault が最後のブロックであれば、break を付けなくても技術的には問題ありませんが、
「switch の中の各ブロックは最後に break」という形をそろえておいたほうが、後で case を増やしたときに事故りにくくなります。
ここが重要です。default だから特別扱いしない。
「switch の各ブロックは break で終わる」という“型”を揃えておくことで、後から読む自分や他人が迷わないコードになります。
default と if / else の関係をイメージする
if / else 版と書き比べる
さきほどの color の例を、if / else で書くとこうなります。
const color = "yellow";
if (color === "red") {
console.log("赤です");
} else if (color === "blue") {
console.log("青です");
} else {
console.log("赤でも青でもありません");
}
JavaScriptswitch 版と比較してみると:
case "red":→if (color === "red")case "blue":→else if (color === "blue")default:→else
と対応しています。
つまり、default は 「すべての case の ‘else’ まとめ」 です。
ここが重要です。default を難しく考える必要はありません。
「どの case にも入らなかったら、ここに来る」と、if / else の感覚で捉えてしまって大丈夫です。
default が本当に役立つ具体例
例1:コマンドが不正なときにエラーを出す
例えば、ユーザーの操作コマンドに応じて処理を変えるコードを考えます。
const command = "update";
switch (command) {
case "create":
console.log("新規作成します");
break;
case "delete":
console.log("削除します");
break;
default:
console.log("不明なコマンドです:", command);
break;
}
JavaScriptcommand が “create” や “delete” なら対応する処理が走りますが、
それ以外(”update” やタイポの “cretae” など)のときは default に来て、
「不明なコマンドです」とエラーっぽいメッセージを表示できます。
ここが重要です。default を使うことで、「想定外の値」に気づけるようになります。
何も表示しない / 何もしないよりも、「変な値が来たぞ」と教えてくれる方が、バグの発見が圧倒的に楽になります。
例2:全パターンを網羅できているかチェックする
例えば、ステータスが "pending", "success", "error" のどれか、という前提のコードがあるとします。
const status = "unknown";
switch (status) {
case "pending":
console.log("処理中です");
break;
case "success":
console.log("成功しました");
break;
case "error":
console.log("エラーが発生しました");
break;
default:
console.log("想定外のステータスです:", status);
break;
}
JavaScriptこのとき、もしバックエンドの仕様変更で "cancelled" という新しいステータスが増えたのに、
フロント側がそれを知らずに放置していた場合、default に必ず落ちてきます。
そこで「想定外のステータスです: cancelled」とログに出てくれるので、「あ、新しいパターンが増えている」と気づけます。
もし default がなかったら、何も表示されず、「なんか UI が変」とだけ感じる状態になりがちです。
ここが重要です。default は、仕様変更や想定外の値からあなたを守ってくれる“警報装置”にもなります。
「ここには来ないはず」と思っていても、一行ログを書くくらいはしておくのがおすすめです。
default の位置と実行順序
default は必ず最後じゃなくてもいい
実は、構文上は default を一番下に置かなくても動きます。
const value = 2;
switch (value) {
default:
console.log("default");
break;
case 1:
console.log("1");
break;
case 2:
console.log("2");
break;
}
JavaScriptvalue が 2 のとき、「2」と表示されます。
switch の評価順は「上から順に」ですが、case は「値が一致したとき」にだけ反応するので、default の位置に関わらず、マッチする case があればそちらが優先されます。
ただし、読みやすさの観点から、default は一番下に置くのが一般的です。
ここが重要です。
「default は最後じゃないと動かない」わけではありません。
でも、人間にとって読みやすいのは「上に具体的な case、最後に default(その他全部)」という形です。
“コードを読む人の頭の流れ” に合わせて、基本は一番下に置きましょう。
default を「省略していい場合」と「書いたほうがいい場合」
default を省略してもよいケース
例えば「3 つの値しか来ないことが、外側で完全に保証されている」ケースでは、
default は必須ではありません。
const level = 1; // 1, 2, 3 のどれかという前提
switch (level) {
case 1:
console.log("初級");
break;
case 2:
console.log("中級");
break;
case 3:
console.log("上級");
break;
}
JavaScriptもし本当に 1, 2, 3 以外が絶対に来ないなら、これで充分です。
default に来ることはありません。
default を書いたほうがいいケース
ただし、現実のコードでは「絶対来ない」という前提は崩れやすいです。
- データ形式の仕様が変わる
- 他の人が別の値を追加する
- バグや外部入力で変な値が紛れ込む
そういった事情を考えると、少なくとも開発中やデバッグ中は、
default を付けてログを出したほうが安心です。
default:
console.log("未知の level:", level);
break;
JavaScriptここが重要です。
default を書くかどうかは、“この値のバリエーションを本当に全部知っているか?” という自分への問いでもあります。
「知らないパターンが来る可能性があるなら、とりあえず default で気づけるようにしておく」が、安全側の設計です。
初心者として「default」で本当に押さえてほしいこと
default は、switch 文の中で「どの case にも当てはまらなかったとき」に実行される部分。
if / else でいう else に相当し、「それ以外全部」を担当する。
default は、たとえ「来ないはず」のパターンでも、ログを出すなどして「想定外の値」に気づける場所としてとても役立つ。
特に API のレスポンスやステータス値など、将来パターンが増える可能性があるものでは重要。
書く位置は文法的には自由だが、読みやすさのために基本は一番下に置き、各 case と同じように break で終わらせるのがおすすめ。
default を省略してもよいのは「本当にすべての値パターンを把握していて、絶対それ以外が来ない」と言い切れる場面だけ。
それ以外の場合は、少なくとも開発段階では default を付けておくほうが安全。
ここが重要です。
default は、“予想外の状況を無視せずにちゃんと扱うための安全装置” です。
switch 文を書くときは、
「想定しているパターン(case)はこれだけど、
それ以外が来たとき、プログラムにはどう振る舞ってほしいか?」
を一度自分に問いかけてから、default に適切な処理やログを書き込んでみてください。
それだけで、バグに強い条件分岐に一歩近づきます。
