概要
等値演算子で値が等しいかの判定が行われる時、型変換が実行されます。
例えば、下記のようなコードを書いて出力してみます。
(コメント部分は出力結果です)
//trueと出力 console.log(null == undefined); //trueと出力 console.log("50" == 50); //falseと出力 console.log(60 == false); //trueと出力 console.log(0 == false); //falseと出力 console.log("70" == false); //trueと出力 console.log("0" == false);
上記の実行結果で、trueと返るコードがあります。
等値による比較を行っていますが、それぞれ左辺と右辺で異なる型を書いていますが、比較するタイミングで型の変換が行われ、それを基に結果(true/false)が出力されていることがわかります。
例えば「0 == false」の比較では、右辺のfalseが比較時に一度0として変換された後に処理されているのがわかります。
等値演算子と、同値演算子の比較
等値演算子「==」による比較は上記にようになりますが、同値演算子の場合はどうなるでしょうか。
試しに、上記の例の比較部分を全て同値演算子に変更したコードを書いてみます。
//falseと出力 console.log(null === undefined); //falseと出力 console.log("50" === 50); //falseと出力 console.log(60 === false); //falseと出力 console.log(0 === false); //falseと出力 console.log("70" === false); //falseと出力 console.log("0" === false);
上記の結果、全てfalseとして判定されました。
同値演算子の場合は、動的に型変換が行われず、厳密に型が違う為にfalseを返す挙動になります。
javascriptでは、値の変換がおこる場合、演算子や文で必要とされる型への変換が動的に行われます。