[解決済み] JavaScriptで "true" == trueがfalseと表示されるのはなぜですか?
2023-01-30 09:14:12
質問
2 つのオペランドが同じ型でない場合、JavaScript はオペランドを変換し、厳密な比較を適用します。オペランドが数値またはブーリアンである場合、可能であれば数値に変換され、オペランドのどちらかが文字列である場合、可能であればもう一方のオペランドも文字列に変換されます。
これを踏まえて、私なら
"true" == true
を次のように評価します。
- 同じタイプか? いいえ
- オペランドが数値かブール値か? はい
-
両方を数値に変換することは可能ですか?
できません。
(
isNaN(Number("true")) // true
) - オペランドのどちらかが文字列か? はい
-
もう一方のオペランドを文字列に変換することは可能ですか?
はい
(
String(true) === "true" // true
)
結局、文字列
"true"
と
"true"
と評価されるはずです。
true
と評価されるはずですが、JavaScriptはfalseを表示します。
何か見落としがあったのでしょうか?
どのように解決するのですか?
なぜなら
"true"
が変換され
NaN
に変換され、一方
true
に変換されます。
1
. だから、両者は異なる。
ご報告のように、どちらも数値に変換されるのは、少なくとも
true
は数値に変換され(Erik Reppenのコメント参照)、それから比較されます。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる