JavaScript | 基礎構文:条件分岐 – default

JavaScript JavaScript
スポンサーリンク

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

このコードの動きを追うと:

  1. switch (color) → 値は "yellow"
  2. case "red": → 一致しない
  3. case "blue": → 一致しない
  4. どの case にもマッチしなかったので、default: に進む
  5. "赤でも青でもありません" が表示される

もし color"red" なら、default は実行されません。
「どの case にも一致しないときにだけ動く」 のが default です。

default にも break は付けるべき?

多くの場合、default の最後にも break; を付けます。

default:
  console.log("赤でも青でもありません");
  break;
JavaScript

default が最後のブロックであれば、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("赤でも青でもありません");
}
JavaScript

switch 版と比較してみると:

  • 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;
}
JavaScript

command が “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;
}
JavaScript

value が 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 に適切な処理やログを書き込んでみてください。
それだけで、バグに強い条件分岐に一歩近づきます。

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