2つのオペランドが同じタイプでない場合、JavaScriptはオペランドを変換してから、厳密な比較を適用します。いずれかのオペランドが数値またはブール値の場合、可能であれば、オペランドは数値に変換されます。それ以外の場合、いずれかのオペランドが文字列の場合、可能であれば、もう一方のオペランドが文字列に変換されます。
これを念頭に置いて、私は"true" == true
次のように評価します。
- それらは同じタイプですか?番号
- オペランドは数値ですか、それともブール値ですか?はい
- 両方を数値に変換できますか?いいえ(
isNaN(Number("true")) // true
) - どちらのオペランドも文字列ですか?はい
- 他のオペランドを文字列に変換できますか?はい(
String(true) === "true" // true
)
文字列"true"
と"true"
、に評価されるはずですtrue
が、JavaScriptはfalseを示しています。
私は何を逃しましたか?