しばらく前にこの記事を読んで興味深いことが書かれていた。
たとえば、最も一般的な考えとは真逆になりますが、==演算子は実際には===よりも強力で実用的です。本当は、優先的に==を使い、===は最後の選択肢にするべきです
どういうこと???
でも言われてみれば ==
が何なのかよくわかってない。
この言葉の真意を知りたくて You Don't Know JavaScript を読むことにした。
僕は O'Reilly の Learning サービスで読んでるけど、GitHubで無料で読める。
で、肝心の ==
に関する部分は次
https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/types-grammar/ch4.md#loose-equals-vs-strict-equalsgithub.com
皆ちゃんと読んでほしいけど、忙しい人向けに要約すると、
==
は型変換をした上で比較をして、===
は型変換をせずに比較をする==
の型変換のルールは基本的に両者を Number に型変換した後比較する (端折った書き方なのでちゃんと本文読んでね)"42" == 42
や["42"] == 42
は true になるので便利- よくみる
x === undefined || x === null
というのはx == null
でよい "0" == false
,false == 0
,false == ""
,false == []
が true になるため、Boolean の比較には==
を使わず!!x
やBoolean(x)
などを使う"" == 0
,"" == []
,0 == []
は true になるため、[]
,""
,0
が現れる可能性があるときは==
を使わないようにする<
,>
,<=
,>=
は==
と同様の型変換をする
ということらしい。
このひょうを覚えれば完璧だ! github.com