さめたコーヒー

kbaba1001's blog.

You Don't Know JavaScript を読んだので==についてメモ

しばらく前にこの記事を読んで興味深いことが書かれていた。

itnews.org

たとえば、最も一般的な考えとは真逆になりますが、==演算子は実際には===よりも強力で実用的です。本当は、優先的に==を使い、===は最後の選択肢にするべきです

どういうこと???

でも言われてみれば == が何なのかよくわかってない。 この言葉の真意を知りたくて You Don't Know JavaScript を読むことにした。

僕は O'Reilly の Learning サービスで読んでるけど、GitHubで無料で読める。

github.com

で、肝心の == に関する部分は次

github.com

皆ちゃんと読んでほしいけど、忙しい人向けに要約すると、

  • == は型変換をした上で比較をして、 === は型変換をせずに比較をする
  • == の型変換のルールは基本的に両者を Number に型変換した後比較する (端折った書き方なのでちゃんと本文読んでね)
  • "42" == 42["42"] == 42 は true になるので便利
  • よくみる x === undefined || x === null というのは x == null でよい
  • "0" == false, false == 0, false == "", false == [] が true になるため、Boolean の比較には == を使わず !!xBoolean(x) などを使う
  • "" == 0, "" == [], 0 == [] は true になるため、 [], "", 0 が現れる可能性があるときは == を使わないようにする
  • <, >, <=, >=== と同様の型変換をする

ということらしい。