edubun
日本語

真偽値と比較

5 == "5" は true ですが、5 === "5" は false です。三つの等号は、両側が同じ型であることも確かめます。

はいかいいえで答える問い

プログラムはいつも問いを立てています。パスワードは十分に長いか。プレイヤーの残りの命はなくなったか。今日は週末か。どれも答えは二つのうちの一つで、JavaScript はそれを二つの真偽値 true と false で表します。真偽値(boolean)の名前は、真と偽の代数を考え出した 19 世紀の数学者ジョージ・ブールにちなんでいます。真偽値はそれだけではあまりおもしろくありませんが、プログラムが判断できるのは真偽値のおかげです。それが次の単元のテーマです。

比較演算子

比較は二つの値を受け取り、真偽値を生み出します。よく使う六つを下にまとめました。「等しい」が三つの等号で書かれていることに注意しましょう。一つの = はすでに「値を入れる」という意味だからです。

演算子問い例結果
===等しい?4 === 4true
!==等しくない?4 !== 4false
<より小さい?3 < 8true
>より大きい?3 > 8false
<=以下?8 <= 8true
>=以上?7 >= 8false

計算と同じように比較も式なので、表示したり変数に入れたりできます。const isAdult = age >= 18; は、年齢に応じて true か false を isAdult に入れます。真偽値の変数名は is、has、can で始めることが多く、そうするとコードが問いのように読めます。

== ではなく === を使う理由

JavaScript には二つの等号 == もあり、緩い等価と呼ばれます。== は比べる前に両側を同じ型に変えようとするので、予想しにくい結果になります。5 == "5" は true で、0 == "" も true です。三つの等号 === は厳密な等価で、型を変えることはありません。型がちがえば、答えはただ false になります。MDN やほとんどのスタイルガイドは、ふだんのコードには === と !== をすすめています。このコースでもずっとこの二つを使います。

console.log(5 === 5);      // true
console.log(5 === "5");    // false
// 緩い等価(使わないほうがよい):
console.log(5 == "5");     // true
console.log("cat" !== "dog"); // true

文字列も比較できます。=== は二つの文字列の文字が大文字もふくめて完全に同じかを確かめるので、"Yes" === "yes" は false です。< と > の演算子は、文字コードを使って文字列を一文字ずつ比べます。小文字の英単語なら、これは辞書の順にほぼ近くなります。"apple" < "banana" は true です。この順序では大文字がすべての小文字より前に来るので、"Zebra" < "apple" も true です。

&&、||、! で答えを組み合わせる

実際の問いは、いくつかの部分からできていることがよくあります。ある乗り物には、身長 120 cm 以上かつ 8 歳以上という条件があるかもしれません。JavaScript は論理演算子で真偽値の答えを組み合わせます。&&(かつ)は両側が true のときだけ true です。||(または)は少なくとも片側が true なら true です。!(否定)は真偽値を反対にするので、!true は false です。

const height = 130;
const age = 7;
console.log(height >= 120 && age >= 8);   // false
console.log(height >= 120 || age >= 8);   // true
console.log(!(age >= 8));                 // true

例題。その日は週末でしょうか。day === "Sat" || day === "Sun" です。両側に day === をくり返して書く必要があることに注意しましょう。day === "Sat" || "Sun" と書くと英語としては自然に見えますが、思ったとおりには動きません。"Sun" だけでは比較にならないからです。比較は && や || より先に計算されるので、height >= 120 && age >= 8 に余分なかっこはいりません。ただし、つけても害はありません。

あとで出てくる考え方をもう一つ紹介します。JavaScript は真偽値が必要なところで別の値を受け取ると、いくつかの値を false として扱います。この falsy な値は、false、0、空文字列 ""、null、undefined、NaN です。それ以外はすべて true として扱われます。文字列の "0" や "false" も true です。

かつ && は両方が true であること。または || は一つが true であること。否定 ! は答えを反対にする。

booleantrue か false
===厳密な等価:値も型も同じ
!==厳密な不等価:同じではない
==緩い等価:先に型を変える(使わない)
&&かつ:両側が true のときだけ true
||または:少なくとも片側が true なら true
!否定:true と false を反対にする
falsyfalse、0、""、null、undefined、NaN
  1. 何が表示されますか?
    console.log(7 > 7);
    • true
    • false
  2. 何が表示されますか?
    console.log(7 >= 7);
    • true
    • false
  3. 何が表示されますか?
    console.log(3 === "3");
    • true
    • false
  4. 何が表示されますか?
    console.log(3 == "3");
    • true
    • false
  5. 何が表示されますか?
    console.log(true && false);
    • true
    • false
  6. 何が表示されますか?
    console.log(true || false);
    • true
    • false
  7. 何が表示されますか?
    const x = 12;
    console.log(x > 10 && x < 20);
    • true
    • false
  8. 何が表示されますか?
    console.log(!(5 > 2));
    • true
    • false
  9. 何が表示されますか?
    console.log("Yes" === "yes");
    • true
    • false
  10. 何が表示されますか?
    console.log("apple" < "banana");
    • true
    • false
  11. falsy な値はどれですか?
    • "0"
    • 0
    • "false"
  12. day が "Sat" か "Sun" かを正しく確かめているのはどれですか?
    • day === "Sat" || "Sun"
    • day === "Sat" || day === "Sun"
    • day === "Sat" && day === "Sun"
ポイント
  • 比較は true か false を生み出す。
  • === と !== を使う。== は型を変えるので思わぬ結果になる。
  • && は両方、|| は一つが必要、! は反対にする。
  • || と && の両側に、完全な比較をくり返して書く。
  • falsy な値:false、0、""、null、undefined、NaN。
このコースの出典 (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

確認日: 2026-10-17