JavaScript初心者の勘違い
JavaScriptを学ぶ中で、「なんとなくこうだろう」と思っていたことについて、仕様や実際の挙動をもとに整理し基礎を固めていくシリーズです。
「自分も同じ勘違いをしていた!」という方の参考になれば嬉しいです。
はじめに
前回、ChatGPTに出題してもらった「Object型[]を含む==での比較」の例題
を使い、その方法について学習しました。
(前回記事はこちら)
今回は、初心者が間違いやすいnull、undefined、NaNの比較に関する例題を通じて、
仕様を確認しながら学習深めていこうと思います。
問題はこちらです。
null == undefined
NaN == NaN
null == undefined について
考え方
ECMAScriptの仕様で、以下記載があります。
参考:ECMASctipt 型変換の仕様
2. If x is null and y is undefined, return true.
3. If x is undefined and y is null, return true.
x == yという式があったとき、
- xがnull、yがundefinedのときはtrueになる
- xがundefined、yがnullのときはtrueになる
と書いてあります。
そのため、結果はtrueとなります。
この型の組み合わせの結果は、特に内部的な型変換がされるわけでもなく
結果が決まっているのですね。
NaN == NaN について
考え方
NaNは何とも(自分自身とも)比較できない という性質をもちますので、
結果はfalseとなります。
もちろんNaN === NaNもfalseとなります。
NaNに関してはこちらの記事で
勘違いした比較式も紹介しながら解説していますので、ぜひご覧いただけたらと思います。
次回
今回でいったん型変換関連のシリーズは完結です。
今後も引き続き、学習を進める中で生じた勘違いは「勘違いシリーズ」として
続けていきたいと思います。
また、備忘録として自分用に知識的なまとめも投稿していければと思います。