デジハリオンラインスクール9月30日まで10%OFF

JavaScriptのif文を基礎から丁寧に解説(if / else if / else)

5 min 71 views
JavaScriptのif文

初心者でも迷わない条件分岐の書き方・考え方・演算子の使い方

「この条件のときだけ実行したい」「Aならこう、Bならこう、どれでもなければこう」——そんな“判断”をコードに与えるのがif文です。

本記事では、if / else if / elseの基本から、つまずきやすい比較演算子・論理演算子まで、実務でそのまま使える形で丁寧に解説します。

サンプルはすべてコピペOK。最後にベストプラクティスよくあるミスのチェック表も付けました。

1. if / else if / else の基本

構文テンプレート

if (条件1) {
  // 条件1がtrueのとき実行
} else if (条件2) {
  // 条件1がfalse かつ 条件2がtrueのとき実行
} else {
  // どれにも当てはまらないとき実行(省略可)
}

最小例

const score = 78;

if (score >= 80) {
  console.log("合格(優)");
} else if (score >= 60) {
  console.log("合格");
} else {
  console.log("不合格");
}

ポイント

  • 上から順に評価され、最初にtrueになったブロックだけが実行されます。
  • else if は必要なだけ連ねられます。
  • else最後の受け皿想定外の入力に備えて置いておくと堅牢です。

2. 条件式を正しく書くための「演算子」入門

条件式は比較演算子論理演算子で組み立てます。ベースとなる算術演算子もあわせて整理しておきましょう。

2-1. 算術(基本)演算子一覧

演算子意味・結果
+3 + 2足し算(文字列と足すと連結)
-5 - 1引き算
*4 * 2掛け算
/9 / 3割り算
%10 % 3余り(10÷3の余り=1)
**2 ** 3べき乗(2の3乗=8)
++i++後置インクリメント(iを1増やす)
--i--後置デクリメント(iを1減らす)

文字列結合に注意:"1" + 2 // => "12"
数値として計算したいときはNumber()parseInt()で明示的に変換しましょう。

2-2. 比較演算子(条件の“大小・等しさ”)

演算子true になる条件
===a === bかつ 型が等しい
!==a !== bまたは 型が異なる
>a > baがbより大きい
>=a >= baがb以上
<a < baがbより小さい
<=a <= baがb以下

超重要:=== を使う

  • JavaScriptには厳密等価=== と「抽象等価== があります。
  • == は型を暗黙変換して比較するため、意図しないtrueが生まれます。
    例:0 == false // true"" == 0 // true
  • 基本は常に === / !== を使うのが実務の定石です。

2-3. 論理演算子(条件を“つなぐ”)

演算子意味 
&&A && BA かつ B(両方trueでtrue)論理積
||A || BA or(または) B論理和
!!A否定(Aがtrueならfalse)論理否定

例:会員割引の条件

const isMember = true;
const hasCoupon = false;

if (isMember || hasCoupon) {
  console.log("割引適用");
} else {
  console.log("通常価格");
}

3. 真偽値と「truthy / falsy」を理解する

if文は真偽値(true/false)で分岐します。

ただし、JavaScriptでは「真偽値以外」も条件式に書け、内部で真偽に解釈されます。

よく出る falsy 値(条件式でfalseとみなされる)

falsefalse
0 / -0 / 0n0, 0n(BigInt)
空文字"", '', ““
null値がない
undefined未定義
NaN数でない(Not-a-Number)

注意:NaNの罠


NaN === NaN // false です。NaN判定は Number.isNaN(value) を使いましょう。

4. 具体例で理解を深める

4-1. 基本的な多段分岐

function grade(score) {
  if (score >= 90) return "S";
  else if (score >= 80) return "A";
  else if (score >= 70) return "B";
  else if (score >= 60) return "C";
  else return "D";
}

console.log(grade(85)); // "A"

設計ポイント

  • 範囲が重ならないよう大きい条件から順に書くと安全。
  • 早期return(ガード節)でネストを浅く保つと読みやすい。

4-2. 論理演算子で条件を組み合わせる

const age = 25;
const hasID = true;

if (age >= 20 && hasID) {
  console.log("入場可");
} else {
  console.log("入場不可");
}

5. if文の書き方を整えるベストプラクティス

  1. 厳密等価 === を使う==は極力使わない)
  2. 肯定形で書くif (isActive) { ... } の方が if (!isInactive) より読みやすい
  3. 早期return(ガード節)でネストを浅く function login(user) { if (!user) return "ユーザーなし"; if (!user.email) return "メール未登録"; // ここに本処理... }
  4. 条件を関数名で意味づけ const isAdult = (age) => age >= 18; if (isAdult(user.age)) { ... }
  5. 範囲条件は順序を意識(上から厳しい/広い順に並べる)
  6. switchとの使い分け:値の一致が中心(例:曜日や状態定数)ならswitchも検討

6. よくあるミスと対策(チェック表)

ミス問題点対策
==== を混同if (x = 1) {}= は代入。常に1が入って意図せずtrueに比較は === を使う
== による型変換罠"" == 0 // true予期せぬtrue/false常に === / !==
falsyの誤解if (value) {}0"" もfalse扱い必要なら ?? を使用
範囲の重複if (x>=80) ... else if(x>=70) ...70〜79が2回判定されるケース上から広い/厳しい順に設計
NaN判定if (x === NaN)常にfalseNumber.isNaN(x)
ネストが深いif (...) { if (...) { ... }}可読性低下早期return・関数化

デイトラのWeb制作コースでJavaScriptも習える!

Web制作コース

7. 実践ミニレシピ

7-1. 時間帯で挨拶を出し分け

function greetByHour(hour) {
  if (hour < 0 || hour > 23) return "時刻が不正です";
  if (hour < 5)   return "おやすみなさい";
  if (hour < 12)  return "おはようございます";
  if (hour < 18)  return "こんにちは";
  return "こんばんは";
}

7-2. フォーム入力のバリデーション

function validateSignup({ email, password }) {
  if (!email || !password) return "必須項目が未入力です";
  if (!email.includes("@")) return "メール形式が不正です";
  if (password.length < 8) return "パスワードは8文字以上";
  return "OK";
}

7-3. 価格とクーポンの条件判定

function calcPrice(base, { isMember, couponCode }) {
  let price = base;

  if (isMember && price >= 1000) {
    price *= 0.9; // 会員10%オフ
  } else if (couponCode === "WELCOME") {
    price -= 200; // 一律割引
  }

  return Math.max(price, 0);
}

8. まとめ:if文は「読みやすい条件設計」が命

  • if / else if / elseは「上から順に最初のtrueだけ実行」。
  • 条件式は**比較演算子(===推奨)論理演算子(&&, ||, !)**で組み立てる。
  • truthy/falsyの挙動を理解し、??でデフォルト値を安全に扱う。
  • 実務では早期return意味のある関数名で、可読性・拡張性を高める

##(付録)演算子の早見表(保存版)

カテゴリ演算子読み方/用途備考
算術+ - * / % **足し/引き/掛け/割り/余り/べき乗a ** 2文字列に+は連結
インクリメント++ --1増/1減i++前置・後置で評価順が違う
比較=== !== > >= < <=厳密等価/不等価/大小a === b==は避ける
論理`&&!`かつ/または/否定
代入拡張+= -= *= /= %= **=合成代入x += 3可読性向上
Null合体??null/undefinedだけ置換n ?? 0`
オプショナル連鎖?.安全にプロパティ参照user?.nameundefinedを返す

無料カウンセリングでアマギフ1000円貰える!

関連記事