console.log(1 == "1"); // => true console.log(1 == "01"); // => true console.log(0 == false); // => true console.log(0 == null); // => false console.log(null == undefined); // => true
説明
これらの現象は 等価演算子( ==
) の評価を行うときにオペランド同士の型違かった場合に裏で勝手に型を変換してしまうからなんだと。
※JavaScriptの現行コードまで見た訳ではありません
追記
等価演算子を用いて比較した場合の対応テーブルが公開されていたので追記 dorey.github.io
おわりに
いつも同じ値かどうか評価したいときはとりあえず 厳密等価演算子( ===
)を使えば間違いないぐらいしか覚えてなかったけど逆に例外ってどこにあるか覚えておくとなんか自信になるよね。