【JavaScript】if文・switch文で条件分岐

javascript-icon JavaScript

こんにちは、かつコーチです。

前回は算術・比較・論理演算子について解説しました。

今回は、その演算子を使って「条件によって処理を分ける」条件分岐を扱います。

「もし〜だったら、こう処理する」という考え方は、どんなプログラムにも登場する基本のテクニックです。

if文の基本

基本の書き方

条件によって処理を分けるには、if 文を使います。

const age = 20;

if (age >= 20) {
    console.log("成人です");
} else {
    console.log("未成年です");
}
// 出力: 成人です

「もし age が20以上なら『成人です』、そうでなければ『未成年です』を表示する」という処理です。

if (条件) の後の { } の中に、条件が成立したときの処理を書きます。

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");
}
// 出力: 評価:B

上から順に条件をチェックしていき、最初に条件が成立したブロックだけが実行されます。

score が75の場合、最初の score >= 90 は成立しませんが、次の score >= 70 で成立するので「評価:B」が表示されます。

三項演算子で1行にまとめる

処理がシンプルな場合は、if を使わずに三項演算子で1行にまとめることもできます。

const age = 20;
const result = age >= 20 ? "成人です" : "未成年です";
console.log(result);
// 出力: 成人です

条件 ? 条件が true のときの値 : 条件が false のときの値 という形で書きます。

ただし、条件や処理が複雑になる場合は無理に三項演算子を使わず、通常の if 文にした方が読みやすくなります。

switch文:条件のパターンが多いとき

基本の書き方

同じ変数の値によって処理を細かく分けたい場合は、switch 文を使うとすっきり書けます。

const day = "水";

switch (day) {
    case "月":
        console.log("週の始まりです");
        break;
    case "水":
        console.log("週の折り返しです");
        break;
    case "金":
        console.log("もうすぐ休みです");
        break;
    default:
        console.log("普通の日です");
        break;
}
// 出力: 週の折り返しです

case に該当する値がなければ default の処理が実行されます。

else if を何個も並べるより、こういった「同じ変数の値によって分岐する」ケースはswitch文の方が見た目がすっきりします。

つまずきやすいポイント:breakの書き忘れ

フォールスルーとは

switch文で私が実際にやらかした失敗が、break の書き忘れです。

❌ Before:break を書き忘れる

const day = "水";

switch (day) {
    case "月":
        console.log("週の始まりです");
        // breakを書き忘れると…
    case "水":
        console.log("週の折り返しです");
        break;
}
// 出力: 週の折り返しです("月"のcaseにヒットしていなくても意図せず実行される構造になっている)

break を書かないと、該当した case の処理が終わった後も、次の case の処理までそのまま実行され続けてしまいます(これを「フォールスルー」と言います)。

私は最初、なぜか複数のメッセージがコンソールに表示されてしまい、原因を探すのに小一時間かかった記憶があります。

✅ After:各caseの最後に必ずbreakを書く

const day = "月";

switch (day) {
    case "月":
        console.log("週の始まりです");
        break; // ここで確実に処理を終わらせる
    case "水":
        console.log("週の折り返しです");
        break;
}
// 出力: 週の始まりです(意図した通りに1つだけ実行される)

switch文を書くときは、各 case の最後に break を書き忘れていないか、必ず確認する癖をつけましょう。

フォールスルーをあえて使う場面

余談ですが、このフォールスルーの性質は「複数のcaseで同じ処理をしたいとき」にあえて使われることもあります。

const day = "土";

switch (day) {
    case "土":
    case "日":
        console.log("休日です");
        break;
    default:
        console.log("平日です");
        break;
}
// 出力: 休日です

「土」と「日」のどちらでも同じ処理をしたい場合、case "土": の直後に break を書かずに次の case "日": に処理を続けさせることで、コードをまとめられます。

意図せず起きると事故ですが、意図的に使えば便利なテクニックでもあります。

if文とswitch文の使い分け

どちらを選べばいいのか

判断に迷ったときの目安を整理しておきます。

状況おすすめ
範囲による判定(〜以上、〜未満など)if / else if
1つの変数の「値」によって細かく分岐するswitch
複数の条件を組み合わせて判定するif&& `
単純な二択で1行にまとめたい三項演算子

switch は「範囲」の判定には向かないので、年齢や点数のような数値の範囲を扱うときは if / else if を使いましょう。

逆に、曜日や種別のような「決まった値のどれかに一致するか」を判定するときは switch の方が見通しがよくなります。

まとめ

この記事のポイント

  • if / else if / else で条件によって処理を分岐できる
  • 単純な二択には三項演算子で1行にまとめる方法もある
  • 条件のパターンが多いときは switch 文がすっきり書ける
  • switch文の break の書き忘れ(フォールスルー)に注意する
  • 範囲の判定は if、値の一致による分岐は switch が向いている

次に読むべき記事

次回は、同じ処理を繰り返す「for・while・forEach」について解説します。

→ 次の記事:for・while・forEachで繰り返し処理

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