JavaScriptの ==暗黙的な型変換をしています。

等価演算子 == はオペランド同士が異なる型の値であった場合に、同じ型となるように暗黙的な型変換をしてから比較します。


console.log(1 == "1"); // => true :文字列を数値に変換
console.log(1 == "01"); // => true  :文字列を数値に変換
console.log(0 == false); // => true :真偽値を数値に変換
console.log(0 == null); // => false :nullの比較はfalse
console.log(null == undefined); // => true  :nullとundefinedの比較は常にtrue


そのため、結果を予測できない挙動になる場合があり混乱やバグの原因になります。 なので、暗黙的な型変換が行われる等価演算子 == を使わず、厳密等価演算子 === を使うとよいです。

異なる型を比較したい場合は明示的に型変換をします。


ただ、この仕組を知って正しく使うのであれば、あまり気にする必要はないかもしれません。 ちなみに、不等価演算子 !=暗黙的な型変換をしてから比較します。

2022/05/09