JavaScript | 等価演算子

JavaScript JavaScript
スポンサーリンク

では、前回の初級(基本的な型変換ルール)より一歩進んで、中級・上級レベルの「等価演算子(== / ===)」練習問題を紹介します。
JavaScript の「暗黙の型変換」や「参照の比較」など、理解している人でもうっかり間違えやすい問題を中心にしています。


中級問題(10問)

各式の結果を「true」「false」のどちらかで答えてください。
答えのあとに 詳しい解説 を載せています。


🧩 Q1

'0' == false
JavaScript

答え:true
🔍 解説:

  • false → 数値に変換されて 0
  • '0' → 数値に変換されて 0
  • 0 == 0true

🧩 Q2

0 === false
JavaScript

答え:false
🔍 解説:

  • === は型まで比べる。
  • 0(number)と false(boolean)は型が違う ⇒ false

🧩 Q3

' \t\r\n' == 0
JavaScript

答え:true
🔍 解説:

  • 文字列 ' \t\r\n'(空白・タブ・改行)を数値に変換すると 0
  • 0 == 0true

🧩 Q4

[] == ![]
JavaScript

答え:true
🔍 解説:

  • ![]false(空の配列は truthy → 否定で false)
  • 比較するときに []''(文字列)→ 数値 0
  • false → 数値 0
  • 0 == 0true

🧩 Q5

null == 0
JavaScript

答え:false
🔍 解説:
nullundefined だけと等しい(特殊ルール)。
数値とは等しくならない。


🧩 Q6

[] == ''
JavaScript

答え:true
🔍 解説:

  • [] → 文字列 ''
  • '' == ''true

🧩 Q7

[1,2] == '1,2'
JavaScript

答え:true
🔍 解説:

  • [1,2]'1,2' に変換
  • '1,2' == '1,2'true

🧩 Q8

[] == 0
JavaScript

答え:true
🔍 解説:

  • []'' → 数値 0
  • 0 == 0true

🧩 Q9

[null] == ''
JavaScript

答え:true
🔍 解説:

  • [null]'null' ではなく ' '(空文字)
  • '' == ''true

🧩 Q10

[undefined] == 0
JavaScript

答え:true
🔍 解説:

  • [undefined]'' → 数値 0
  • 0 == 0true

上級問題(10問)

型変換・参照比較・NaN・Object.is など、やや実務寄りのひっかけ問題です。


⚙️ Q1

{} == {}
JavaScript

答え:false
🔍 解説:
オブジェクト比較は「参照が同じか」を比較。
別々に作った {} は中身が同じでも false


⚙️ Q2

let a = {}; let b = a;
a == b
JavaScript

答え:true
🔍 解説:
同じオブジェクトを参照しているため、true


⚙️ Q3

NaN == NaN
JavaScript

答え:false
🔍 解説:
NaN は自分自身とも等しくない。
チェックには Number.isNaN() を使う。


⚙️ Q4

NaN === NaN
JavaScript

答え:false
🔍 解説:
=== でも NaN は自分自身と等しくならない。


⚙️ Q5

Object.is(NaN, NaN)
JavaScript

答え:true
🔍 解説:
Object.isNaN を同一と認識する。


⚙️ Q6

+0 === -0
JavaScript

答え:true
🔍 解説:
=== では +0-0 は区別されない。


⚙️ Q7

Object.is(+0, -0)
JavaScript

答え:false
🔍 解説:
Object.is+0-0 を区別する。


⚙️ Q8

'5' > 10
JavaScript

答え:false
🔍 解説:
比較演算子でも暗黙の型変換あり。
'5' → 数値 55 > 10false


⚙️ Q9

'abc' == new String('abc')
JavaScript

答え:true
🔍 解説:
new String('abc') はオブジェクト、== は内部で valueOf() により 'abc' に変換して比較する ⇒ true
ただし === なら false


⚙️ Q10

'abc' === new String('abc')
JavaScript

答え:false
🔍 解説:
プリミティブ文字列とオブジェクトは型が違う ⇒ false


まとめ(中級〜上級の理解ポイント)

分類主な落とし穴対策
型変換空文字・配列・ブール値などが数値に変換される=== を使う
null / undefined特殊に == でのみ等しい=== で区別する
NaN自分自身とも等しくないNumber.isNaN() を使う
+0 / -0=== では区別されないObject.is() を使う
オブジェクト比較参照比較になるJSON.stringify などで内容比較する

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