条件分岐

条件の真偽に応じて実行する処理を切り替える制御構造

プログラミング基礎

条件分岐とは

条件分岐 (Conditional Branch) は、条件の真偽に応じて実行する処理を切り替える制御構造である。「もし〜なら A を実行し、そうでなければ B を実行する」というロジックの基本を担う。

if 文

最も基本的な条件分岐は if 文である。

const age = 18;

if (age >= 18) {
  console.log("成人です");
} else {
  console.log("未成年です");
}

else if による多分岐

条件が 3 つ以上ある場合は else if を使う。

const score = 75;

if (score >= 90) {
  console.log("A");
} else if (score >= 70) {
  console.log("B");
} else if (score >= 50) {
  console.log("C");
} else {
  console.log("D");
}

else if が 4 つ以上連なる場合は、switch 文やオブジェクトマッピングへの置き換えを検討する。

switch 文

特定の値に対する分岐には switch が適する。

const command = "start";

switch (command) {
  case "start":
    initialize();
    break;
  case "stop":
    shutdown();
    break;
  case "restart":
    shutdown();
    initialize();
    break;
  default:
    console.error(`不明なコマンド: ${command}`);
}

break を忘れるとフォールスルー (次の case も実行) が起きるため注意する。

三項演算子

単純な条件分岐は三項演算子で 1 行に書ける。

const status = age >= 18 ? "成人" : "未成年";

ネストした三項演算子は可読性が下がるため避ける。

早期リターン (ガード節)

条件分岐のネストが深くなる場合は、早期リターンで平坦にする。

// ❌ ネストが深い
function process(user: User | null) {
  if (user !== null) {
    if (user.isActive) {
      if (user.hasPermission) {
        return doWork(user);
      }
    }
  }
  return null;
}

// ✅ 早期リターンで平坦
function process(user: User | null) {
  if (user === null) return null;
  if (!user.isActive) return null;
  if (!user.hasPermission) return null;
  return doWork(user);
}

オブジェクトマッピング

文字列による分岐はオブジェクトで置き換えると拡張しやすい。

const handlers: Record<string, () => void> = {
  start: () => initialize(),
  stop: () => shutdown(),
  restart: () => { shutdown(); initialize(); },
};

const handler = handlers[command];
if (handler) {
  handler();
} else {
  console.error(`不明なコマンド: ${command}`);
}

真偽値の判定

JavaScript / TypeScript では、以下の値が偽 (falsy) として扱われる。

false boolean
0, -0 number
"" string
null null
undefined undefined
NaN number

これら以外はすべて真 (truthy) である。空の配列 [] や空のオブジェクト {} は truthy であることに注意する。

よくある間違い

間違い 問題 対策
==== の混同 代入と比較を間違える 常に === を使う
else if の連鎖が長い 可読性の低下 switch やマッピングに置換
三項演算子のネスト 読めない if 文に展開する
falsy の罠 0"" が偽になる 明示的に比較する

条件分岐の設計パターンは関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事