1. ホーム
  2. javascript

[解決済み] JavaScriptで "true" == trueがfalseと表示されるのはなぜですか?

2023-01-30 09:14:12

質問

MDCでは == 演算子を次のように記述します。 :

2 つのオペランドが同じ型でない場合、JavaScript はオペランドを変換し、厳密な比較を適用します。オペランドが数値またはブーリアンである場合、可能であれば数値に変換され、オペランドのどちらかが文字列である場合、可能であればもう一方のオペランドも文字列に変換されます。

これを踏まえて、私なら "true" == true を次のように評価します。

  1. 同じタイプか? いいえ
  2. オペランドが数値かブール値か? はい
  3. 両方を数値に変換することは可能ですか? できません。 ( isNaN(Number("true")) // true )
  4. オペランドのどちらかが文字列か? はい
  5. もう一方のオペランドを文字列に変換することは可能ですか? はい ( String(true) === "true" // true )

結局、文字列 "true""true" と評価されるはずです。 true と評価されるはずですが、JavaScriptはfalseを表示します。

何か見落としがあったのでしょうか?

どのように解決するのですか?

なぜなら "true" が変換され NaN に変換され、一方 true に変換されます。 1 . だから、両者は異なる。

ご報告のように、どちらも数値に変換されるのは、少なくとも true は数値に変換され(Erik Reppenのコメント参照)、それから比較されます。