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