JavaScript | 基礎構文:比較・論理 – 不等号

JavaScript JavaScript
スポンサーリンク

不等号とは何か

不等号は「値の大小」を比べて、真(true)か偽(false)を返す演算子です。主に >(より大きい)、<(より小さい)、>=(以上)、<=(以下)の4つを使います。条件分岐や範囲チェック、並び替えでよく登場します。

console.log(5 > 3);   // true
console.log(5 < 3);   // false
console.log(5 >= 5);  // true
console.log(5 <= 4);  // false
JavaScript

数値の比較(基本)

数値同士の比較は直感どおりに動きます。境界を含めたいときは >=<= を使います。

const age = 18;
console.log(age >= 18); // true(18歳以上)
console.log(7 / 2 > 3); // true(3.5 > 3)
JavaScript

範囲チェックは「下限以上かつ上限以下」を組み合わせます。

const x = 75;
console.log(x >= 50 && x <= 100); // true(50〜100の範囲内)
JavaScript

文字列の比較(辞書順)

文字列は「辞書順(Unicodeコードポイント順)」で比較されます。数字の文字列は数値比較とは結果が異なることがあるので注意してください。

console.log("apple" < "banana"); // true("a"が"b"より前)
console.log("2" < "10");         // false(文字列の並びでは "2" > "1")
JavaScript

数値として比較したい場合は、先に数値へ変換します。

console.log(Number("2") < Number("10")); // true(2 < 10)
JavaScript

大小文字を無視した比較をしたいときは、同じ方向に揃えます。

const a = "Tokyo", b = "tokyo";
console.log(a.toLowerCase() === b.toLowerCase()); // true(大小文字無視)
console.log(a.toLowerCase() < b.toLowerCase());   // false(同じ語)
JavaScript

型が違うときの挙動(暗黙変換)

>< は、両方が文字列なら辞書順、それ以外の型が混ざると多くの場合「数値」へ暗黙変換して比較します。

console.log("7" > 3);   // true("7" → 7 に数値化)
console.log(true < 2);   // true(true → 1)
console.log(null >= 0);  // true(null → 0)
console.log(undefined > 0); // false(undefined は数値化で NaN → 比較は常に false)
JavaScript

意図しない結果を避けるには、比較前に自分で型を揃える(Number, String などで明示変換)習慣を持つと安全です。


NaN・特殊値の比較ルール

NaN(数値ではない)は、大小比較の結果が必ず false になります。計算途中で NaN が混ざると比較が崩れるため、先に判定して除外しましょう。

console.log(NaN > 0);  // false
console.log(NaN < 0);  // false
console.log(NaN >= 0); // false
console.log(NaN <= 0); // false

const n = Number("foo");            // NaN
console.log(Number.isNaN(n) ? "NG" : n >= 0); // "NG"
JavaScript

Infinity-Infinity は想像どおりの上下関係を持ちます。

console.log(Infinity > 1e308);   // true
console.log(-Infinity < -1e308); // true
JavaScript

実用例で理解する

年齢や点数の合格判定

function isPass(score) {
  if (Number.isNaN(score)) return false;
  return score >= 60;
}
console.log(isPass(75)); // true
console.log(isPass(NaN)); // false
JavaScript

範囲内チェック(クランプ前の確認)

function inRange(x, min, max) {
  if (Number.isNaN(x)) return false;
  return x >= min && x <= max;
}
console.log(inRange(5, 1, 10)); // true
console.log(inRange(0, 1, 10)); // false
JavaScript

文字列の並び替え(辞書順)

const arr = ["Bob", "alice", "Carol"];
arr.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
console.log(arr); // ["alice", "Bob", "Carol"]
JavaScript

文字列数字を安全に比較

function compareNumericStrings(a, b) {
  const na = Number(a), nb = Number(b);
  if (Number.isNaN(na) || Number.isNaN(nb)) return "数値にしてください";
  return na < nb ? "aが小さい" : na > nb ? "aが大きい" : "等しい";
}
console.log(compareNumericStrings("2", "10")); // "aが小さい"
JavaScript

まとめと指針

不等号は数値の比較では直感どおりに動きますが、文字列は辞書順、型が混ざると数値への暗黙変換が入り、NaN は常に比較が false になるなどの癖があります。安全に使うために、比較前に型を明示的に揃える、NaN を事前に弾く、文字列数値は Number で変換してから比較する。この3点を押さえれば、不等号まわりのバグを大きく減らせます。

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