今日、私は奇妙な問題に遭遇しました。なぜそれが起こっているのだろうと思っていました...私は、JavaScriptの中で明示的にfalsey(false、0、またはNULL)でなかったものはtrueを返します。これらは同じように評価されないのはなぜですか?
例2ではconsole.log()を例1ではisNativeに、例2ではlocalStorage.getItem(app + ".native_context")に接続すると「false」が返されました。しかし、実際にこれらを実行すると、例1はどちらの場合でも動作しますが、例2は何があってもtrueを返し、すべてが真であるという印象を受けてしまいます。
例1:
var isNative = localStorage.getItem(app + ".native_context");
if (isNative === "true") {
//do x
} else {
//do y
}
}
例2:
if (localStorage.getItem(app + ".native_context")) {
//do x
} else {
//do y
}
}
誰もが何が起こったのか説明できますか?私は見つけることが好奇心です。
それは '' "false" の文字列が含まれている場合それは真実である空でない文字列です。 – JJJ
文字列はブール値ではありません。 –
'localStorage.getItem(app +" .native_context ")が何を評価するかわかりません。どうやらそれは文字列 "真"ではありません。 – colecmc