1. 数値と文字列は == なら等しく === なら等しくない
  2. 0 と空文字は == なら等しい
  3. null と undefined (第 2 引数を渡さない) は == なら等しい
  4. 同じ文字列同士はどちらでも等しい
  5. false と 0 は == なら等しい
コース一覧
JavaScript入門:コードを動かす
比較演算子と ===

JavaScript入門:コードを動かす

HTML に JavaScript を読み込むところから始め、コンソール、文字列と数値、let と const、データ型、型変換、比較・論理・三項・null 合体演算子を学ぶ全 23 レッスン(335 分)の入門コースです。最後は、変数と式を使ってプロフィールの見出し用の値を組み立てます。if 文、配列とループ、DOM 操作は後続コースで扱います。

1
はじめての JavaScript
01. HTML に JavaScript を読み込む5分
02. console.log で表示する15分
03. 文字列を連結する15分
04. 四則演算15分
05. コメントで意図を残す15分
06. エラーを読んでみる15分
07. つくる 起動メッセージ20分
08. 第1章まとめクイズ10分
2
変数とデータ型
01. let と const を使い分ける15分
02. typeof で型を調べる15分
03. 型を変換する15分
04. 真偽値と falsy な値15分
05. null と undefined を見分ける15分
06. テンプレートリテラル15分
07. つくる プロフィールを変数にする20分
08. 第2章まとめクイズ10分
3
演算子と式
01. 比較演算子と ===15分
02. 論理演算子と短絡評価15分
03. 三項演算子で簡潔に15分
04. ?? で既定値を用意する15分
05. 演算子の優先順位15分
06. つくる 表示名を決める20分
07. 第3章まとめクイズ10分

比較演算子と ===

比較演算子
解説

このレッスンで分かること

  • === は型と値の両方を見て比べます
  • == は比べる前に型をこっそり変換するので、結果が直感とズレます

見た目が同じなのに一致しない

プロフィールサイトの入力欄に西暦を打ち込んでもらい、それが今年かどうかを判定したいとします。ところが、入力欄から取り出した値は数字を打っても必ず文字列で届きます。

JavaScript

const year = "2026"; // 入力欄から届いた値 console.log(year === 2026); // false 型が違う console.log(year === "2026"); // true

=== は厳密等価と呼び、型と値の両方が同じときだけ true を返します。人間の目には同じ「2026」でも、JavaScript にとって数値と文字列は別物です。仲間には !==(厳密非等価)と > < >= <=(大小)があり、どれも返るのは true か false の boolean です。値そのものを書き換えることはありません。

== は比べる前に型をそろえてしまう

JavaScript にはもうひとつ == という等価演算子があります。左右の型が違うとき、比較の前に型を変換してから比べます。この変換ルールが独特です。

式== の結果何が起きているか
0 == ""true空文字が数値の 0 に変換される
0 == "0"true文字列 "0" が数値の 0 に変換される
"" == "0"false文字列同士なので変換せず比べる
0 == falsetruefalse が数値の 0 に変換される
null == undefinedtrueこの 2 つだけ特別扱いで等しい

上から 3 行を並べてください。0 と "" が等しく、0 と "0" も等しいのに、"" と "0" は等しくありません。「A と B が等しく、B と C が等しいなら A と C も等しい」が成り立っていません。ルール表を暗記していない人には結果が予測できない、ということです。

JavaScript

console.log(0 == ""); // true console.log(0 == "0"); // true console.log("" == "0"); // false console.log(0 === ""); // false console.log(0 === "0"); // false

=== なら「型が違えばその時点で false」という規則ひとつで済みます。読む人が頭の中でルール表を引かずに済むぶん、安全です。

型変換とは別に、比較そのものが通用しない値がひとつだけあります。数値に変換できなかったときに現れる NaN です。NaN === NaN すら false になるので、NaN かどうかは Number.isNaN で調べます。

JavaScript

const views = Number("たくさん"); // NaN console.log(views === NaN); // false いつでも false console.log(Number.isNaN(views)); // true
解説

現場では ESLint の eqeqeq ルールで == を機械的に禁止していることがほとんどです。数値と文字列を比べたいときは == に任せず、Number(year) === 2026 のように自分で型をそろえてから === で比べます。

よくある間違い

  • = と == と === を取り違える — = は代入です。比較のつもりで isPinned = true と書くと、値を書き換えたうえで常に成立する条件ができあがります。等しいかを調べたいときは記号を 3 つ書く、と体に覚えさせてください

JavaScript

let isPinned = false; console.log(isPinned = true); // true 代入した値がそのまま返る console.log(isPinned === true); // true こちらが比較
  • 境界の値を落とす — 「100 以上」を > 100 と書くと 100 ちょうどが漏れます。>= と <= は等号を含む、と毎回声に出して確かめてください

要件

  1. 関数名は checkEquality、引数は a と b の 2 つにすること
  2. 戻り値は loose と strict の 2 つのキーを持つオブジェクトにすること
  3. loose には a == b、strict には a === b の結果 (どちらも boolean) を入れること

入出力例

checkEquality(2026, "2026") → {"loose":true,"strict":false} checkEquality(0, "") → {"loose":true,"strict":false} checkEquality(null) → {"loose":true,"strict":false} checkEquality("プロフィールサイト", "プロフィールサイト") → {"loose":true,"strict":true} checkEquality(false, 0) → {"loose":true,"strict":false}

ヒント

比較の結果そのものが boolean なので、`if` は要りません。式をそのままオブジェクトの値に入れます

`return { loose: a == b, strict: a === b };` の 1 行で書けます

キーの名前は `loose` と `strict` です。つづりを間違えるとテストが通りません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • 論理演算子と短絡評価

    複数の条件を「かつ」「または」でつなぐ演算子を学びます。&& と || は真偽値ではなく値そのものを返し、必要なければ右辺を評価しません。

  • 三項演算子で簡潔に

    条件によってふたつの値を切り替える演算子を学びます。式なので、そのまま return や変数への代入に書けます。

  • ?? で既定値を用意する

    値が null または undefined のときだけ既定値に差し替える演算子を学びます。|| と違って 0 や空文字はそのまま残ります。

  • 演算子の優先順位

    ひとつの式に複数の演算子が並んだとき、どれから評価されるかの順序を学びます。丸括弧で明示すれば順序を変えられます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • JavaScriptWeb で動的な振る舞いを担う言語
  • 演算子//は切り捨て除算(7 // 2 = 3)。
  • 型変換あるデータ型を別の型に変換すること。
  • 関数処理に名前を付けて再利用できる単位
  • 引数位置引数=順番で渡す。
  • 戻り値呼び出し元への返答を表す点線矢印
  • オブジェクトキーと値のペアで構造を作るデータ
main.js
学習モード
エディタを読み込んでいます

メモ

比較演算子と ===

⌘S で保存