比較演算子と論理演算子は 条件分岐(if文) を作るときの基本中の基本です。ここでは「何を比較しているか」「どんなときに true / false になるか」「よくある落とし穴」「実践例」を分かりやすくまとめます。
1. 比較演算子(何と何を比べる?)
比較演算子は 2つの値を比べて 真(true)か偽(false)かを返します。
===厳密等価(値と型の両方が同じ) — ← 基本はこれを使う!==厳密不等価(値か型が違えば true)==等価(型変換して比較する) — 注意して使う!=不等価(型変換あり)>(より大きい)<(より小さい)>=(以上)<=(以下)
例(そのまま試せます)
console.log(5 === 5); // true
console.log(5 === '5'); // false (型が違う)
console.log(5 == '5'); // true (文字列 '5' を自動で数値に変換して比較)
console.log(10 > 7); // true
console.log(3 <= 3); // true
JavaScriptなぜ === を優先するのか(落とし穴)
== は型を自動変換するので、意図しない true が返ることがあります:
0 == false // true
'' == false // true
null == undefined // true
JavaScript→ バグの原因になるため、原則 === を使うのが安全です。
2. truthy / falsy(真/偽扱いされる値)
JavaScript の if などで「値そのもの」を条件に使うとき、値は自動で真偽に評価されます。代表的な falsy(偽とみなされる) 値は次の6つ:
false, 0, ''(空文字), null, undefined, NaN
それ以外は truthy(真扱い) です。例:
if ('hello') { console.log('truthyです'); } // 実行される
if ('') { console.log('実行されない'); } // 実行されない(falsy)
JavaScript3. 論理演算子(複数条件を組み合わせる)
&&(AND) — 両方が true のときだけ true||(OR) — どちらかが true なら true!(NOT) — 真偽を反転(true → false、false → true)
真理値表(簡単)
true && true→truetrue && false→falsetrue || false→truefalse || false→false!true→false
例
let age = 25;
let hasTicket = true;
if (age >= 18 && hasTicket) {
console.log('入場できます');
}
let isWeekend = true;
let isHoliday = false;
if (isWeekend || isHoliday) {
console.log('休みだよ');
}
JavaScript4. 短絡評価(ショートサーキット)と戻り値の使い方
&& と || は 真偽だけでなく「値」を返す点に注意(短絡評価)。
a && b:まずaを評価。aが falsy ならaを返す。そうでなければbを返す。a || b:まずaを評価。aが truthy ならaを返す。そうでなければbを返す。
例(実用)
let name = '';
let display = name || 'ゲスト';
console.log(display); // 'ゲスト'(name が空文字なので代わりに 'ゲスト' が使われる)
let obj = null;
let maybe = obj && obj.value;
console.log(maybe); // null (obj が null なので obj.value を評価せず null が返る)
JavaScript→ && は「安全にプロパティ参照するガード」に使えます(ただし後述の ?. があるともっと安全)。
5. よくある実践パターン(例題)
例A:年齢と会員フラグで条件分岐
let age = 30;
let isMember = false;
if (age >= 18 && isMember) {
console.log('会員の成人です');
} else if (age >= 18 && !isMember) {
console.log('成人だが一般会員です');
} else {
console.log('未成年です');
}
JavaScript例B:フォーム入力のチェック(name が空かどうか)
let name = ''; // ユーザーが空で送信した
if (!name) {
console.log('名前を入力してください');
} else {
console.log('こんにちは、' + name + 'さん');
}
JavaScript例C:範囲チェック(ある値が範囲内か)
let temp = 22;
if (temp >= 20 && temp <= 25) {
console.log('快適な温度です');
}
JavaScript6. 優先度・括弧で明示する
&& は || より優先度が高いです(つまり a || b && c は a || (b && c) と同じ)。読みやすさとバグ回避のため、複雑な条件には必ず括弧 () を使うことをおすすめします。
// 混乱しやすい例
if (isAdmin || isOwner && isActive) {
// 意味は isAdmin || (isOwner && isActive)
}
// 明示的に書く(読みやすい)
if (isAdmin || (isOwner && isActive)) { ... }
JavaScript7. よくある間違い(チェックリスト)
=(代入)と==,===(比較)を混同しない。if (x = 5)は NG(代入してしまう)。if (x === 5)を使う。==は型変換するので予期しない結果を招く。基本===を使う。nullとundefinedの違いに注意(厳密には違う)。- 空文字
''、0、NaNは条件で falsy と評価される。 - 複雑な条件は関数に切り出す(可読性向上)。
8. 練習問題(手を動かそう) — 解答付き
問1(基本)
変数 n が偶数なら Even、奇数なら Odd を表示してください。
// 解答
let n = 8;
if (n % 2 === 0) console.log('Even');
else console.log('Odd');
JavaScript問2(複合条件)
score が 60 以上かつ attended が true のときだけ 合格 を出すコードを書いてください。
// 解答
let score = 65;
let attended = true;
if (score >= 60 && attended) console.log('合格');
else console.log('不合格');
JavaScript問3(短絡評価を使う)
username が空文字なら ゲスト を表示する短い書き方をしてください(if を使わない)。
// 解答
let username = '';
console.log(username || 'ゲスト');
JavaScript問4(落とし穴)
value = 0 のとき if (!value) を使うとどうなる?適切か説明してください。
解答:0 は falsy なので !value は true になり if (!value) が実行されます。もし「0 は有効な入力」と扱いたいなら value == null または value === null || value === undefined でチェックする方が良いです。
9. 次のステップ(おすすめ)
switch文(値が多く分岐する場合)- 論理演算子の短絡評価を利用した「デフォルト値」「早期 return」パターン
?.(オプショナルチェイン)や??(Nullish coalescing) — 安全な参照・デフォルト値の扱い(興味あれば詳しく説明します)
