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

JavaScript JavaScript
スポンサーリンク

不等号を一言でいうと

「不等号(ふとうごう)」は、
2つの値の「大小関係」を比べて、結果を true / false(真偽値)で返す記号 です。

数学でおなじみの

  • > より大きい
  • < より小さい
  • >= 以上
  • <= 以下

これらが JavaScript の不等号(比較演算子)です。

ここが重要です。
不等号の結果は必ず true か false になる
そしてそれが if 文や while 文など「条件付きの処理」の土台になります。
「どんな値を比べて、どんなときに true にしたいのか」を、言葉で説明できるレベルまで意識することが大切です。


基本:数値同士の不等号

単純な例から

数値(number)同士の比較は、数学とほぼ同じ感覚です。

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

結果は true か false。
これを if 文に使うとこうなります。

const score = 80;

if (score >= 70) {
  console.log("合格");
} else {
  console.log("不合格");
}
JavaScript

score >= 70 が true なら「合格」、false なら「不合格」。
「比較 → true / false → それで分岐」という流れが、プログラムの基本パターンです。

境界値を意識して書く

例えば「70点以上」「70点より上」
どちらにしたいかで演算子が変わります。

if (score >= 70) {  // 70 も含む
  // ...
}

if (score > 70) {   // 70 は含まない(71以上)
  // ...
}
JavaScript

ここが重要です。
「以上(>=)」と「より大きい(>)」の違いを、ちゃんと日本語でイメージすること。
どの値を境界にして、そこを含むのか含まないのかを意識せずに書くと、
「69 点で通ってほしいのに落ちる」みたいな境界バグがよく起きます。


文字列に対する不等号(辞書順の比較)

文字列も > / < で比べられる

JavaScript では、文字列同士にも > < を使えます。
このときは 辞書順(アルファベット順) で比較されます。

console.log("apple" < "banana"); // true
console.log("cat" > "banana");   // true
console.log("abc" >= "abc");     // true
console.log("abc" <= "abz");     // true
JavaScript

内部的には、左から 1 文字ずつ取り出して、
文字コード(Unicode)の大小で比較しています。

大文字・小文字も区別される

console.log("a" < "b"); // true
console.log("A" < "a"); // true("A" のほうがコードが小さい)
console.log("Z" < "a"); // true
JavaScript

人間の感覚的には「a と A は同じ文字」ですが、
JavaScript にとっては別の文字です。

大文字・小文字を無視して比較したい場合は、
あらかじめ toLowerCase()toUpperCase() で揃えてから比べます。

const a = "Apple";
const b = "banana";

const result = a.toLowerCase() < b.toLowerCase();
console.log(result); // true("apple" < "banana")
JavaScript

ここが重要です。
文字列の不等号は「辞書順」「大文字小文字を区別する」という前提があります。
人間の感覚ではなく、“並び順の比較” だと意識すると混乱が減ります。


不等号と型:数値と文字列が混ざるとどうなるか

数値と「数字っぽい文字列」の比較

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

> < の場合、
相手が「数字として解釈できる文字列」なら、数値に変換してから比較 します。

console.log("10" > 2);   // true("10" → 10)
console.log("10" < 2);   // false
JavaScript

「数字に見えない文字列」は、
数値に変換できず、結果が少しややこしくなります。

console.log("abc" > 2);  // false
console.log("abc" < 2);  // false
JavaScript

これは "abc" が数値に変換できず(NaN)、
NaN との比較はどちらも false になるためです。

数値との比較は、基本「数値に揃えてから」やるほうが安全

const input = "10"; // ユーザー入力(文字列)

// 推奨されない例
if (input > 5) {
  console.log("5より大きい");
}

// おすすめ
const num = Number(input);
if (Number.isNaN(num)) {
  console.log("数値として不正な入力です");
} else if (num > 5) {
  console.log("5より大きい");
}
JavaScript

ここが重要です。
> < には「文字列 → 数値」への暗黙の型変換ルールがありますが、
それに頼って比較をすると、
「本当は数値として無効な入力」まで処理に混ざってしまう危険があります。
数値を比べたいなら、自分で Number 変換してから不等号を使う、が基本のスタンスです。


不等号を条件式でどう使うか(実践的なパターン)

範囲チェック:○以上△未満

よくあるのが「ある範囲に入っているか?」のチェックです。

const score = 75;

// 70以上かつ90未満
if (score >= 70 && score < 90) {
  console.log("B評価");
}
JavaScript

ここでは
「70 を含むが、90 は含まない」
という条件になっています。

複数段階の評価

const score = 85;

if (score >= 90) {
  console.log("A");
} else if (score >= 80) { // 90 未満かつ 80 以上
  console.log("B");
} else if (score >= 70) {
  console.log("C");
} else {
  console.log("D");
}
JavaScript

ここでのポイントは、

  • 上から順に条件が評価される
  • 上の条件にマッチしたら、下はチェックされない

ことです。
不等号の境界設定をミスると、
「80点のときにどのランクにも入らない」みたいなことが起こります。

不等号を連結してはいけない例(数学のノリで書かない)

数学の感覚でこう書きたくなる人がよくいます。

const x = 5;
console.log(1 < x < 10); // ??? 
JavaScript

これは 期待した動きになりません。

評価順はこうです。

1 < x    // true(x = 5 のとき)
true < 10 // true が 1 に変換される → 1 < 10 → true
JavaScript

つまり「1 < x < 10」はいつも「true < 10」まで評価されてしまい、
x の値によっておかしな結果になります。

正しくは必ずこう書きます。

console.log(1 < x && x < 10); // 1より大きく、かつ10より小さい
JavaScript

ここが重要です。
「数学の不等式」と「JavaScript の比較式」は別物。
「1 < x < 10」ではなく、「1 < x && x < 10」と、
比較を分けて論理演算子でつなぐのが正しい書き方です。


不等号と等号を組み合わせる考え方

> / < と >= / <= の選び分け

境界値を含むかどうかで、演算子を選びます。

// 20歳以上(20を含む)
if (age >= 20) {
  // ...
}

// 20歳より上(20は含まない)
if (age > 20) {
  // ...
}
JavaScript

「20 歳になった瞬間に条件を満たしてほしい」なら >=
「20 歳を過ぎてから」なら > です。

文字列でも同じ

const s = "mango";

// "banana" 以上 "orange" 未満の範囲か?
if (s >= "banana" && s < "orange") {
  console.log("範囲内です");
}
JavaScript

辞書順なので、
この条件は「banana 〜 orange の間にある単語か?」
という判定になります。

ここが重要です。
不等号を使うときは常に、「どの値を境目に、どちら側を含めるのか?」を言葉で説明できる状態にする。
説明できない比較式は、あとで見たとき自分でも分からなくなるので、その場で書き直したほうがいいです。


初心者として不等号で本当に押さえてほしいこと

不等号(> < >= <=)は、
2つの値の大小関係を比べて true / false を返す

数値の比較では、境界値(>= か > か)をちゃんと意識する。
「含む」「含まない」を日本語で言えることが重要。

文字列の比較は「辞書順」「大文字小文字を区別」。
人間の「意味としてどっちが大きいか」ではなく、「並び順の比較」。

数値と文字列を混ぜると暗黙の型変換が起こるので、
本当に数値を比べたいなら、まず Number に変換してから不等号を使う。

数学の感覚で 1 < x < 10 のように書いてはいけない。
必ず 1 < x && x < 10 と、比較を分けて論理演算子でつなぐ。

ここが重要です。
不等号は if や while の「条件の中心」にいる存在です。
「どんな値のときに true にしたいのか?」を頭の中でハッキリさせてから、
> < >= <= を選ぶ癖をつけると、
境界バグや「なんでこのときだけ動かないの?」という悩みがかなり減ります。

最後に、感覚をつかむための小さな練習を置いておきます。
結果を予想してから実行してみてください。

console.log(5 > 3);
console.log(5 >= 5);
console.log(5 < 5);
console.log(5 <= 5);

console.log("apple" < "banana");
console.log("Apple" < "apple");
console.log("abc" < "abz");

const x = 7;
console.log(1 < x && x < 10);   // この意味を日本語で説明してみる
JavaScript

「自分の予想」と「実際の結果」を比べながら、
不等号が頭の中のイメージとどれくらい一致しているか、確かめてみてください。

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