gpt4 book ai didi

javascript - 错误的变量不会验证为错误

转载 作者:行者123 更新时间:2023-12-03 16:43:49 25 4
gpt4 key购买 nike

我无法理解代码中的一些奇怪行为,我想知道是否有人可以告诉我我做错了什么?

我有一个 bool 变量 isWaiting,它在 localStorage 中保存为 false,当它被检索时,它显示为 false 但是当你进行验证时,它不会那样看。这是复制我的问题的小代码:

(function(){
localStorage.setItem("isWaiting", false);
var isWaiting = localStorage.getItem("isWaiting");
console.log("isWaiting = " + isWaiting)
console.log("Is isWaiting False? " + Boolean(isWaiting === false));
// I have tried it as this as well
console.log("Is isWaiting False? " + (isWaiting === false));
})()

应该得到:

isWaiting = false

Is isWaiting False? true

产生:

isWaiting = false

Is isWaiting False? false ⬅ This is clearly wrong, so why is this happening?

我做错了什么? false 的 bool 值是否在 localStorage 进程中以某种方式被破坏了?如果是,我将如何解释它?如果不是,那是什么问题?


解决方案更新:10/09/18

基于帮助我确认我对 LS 进程正在破坏值类型的怀疑确实是正确的,更具体地说,@bhojendra-rauniyar 提供的解决方案,我已经更改了代码以更正类型检索的时刻,然后在整个代码中正常处理它,避免添加大量代码,它似乎已经成功了,感谢大家的帮助。

...
var isWaiting = Boolean(JSON.parse(localStorage.getItem("isWaiting")));
...

最佳答案

本地存储以字符串形式存储值。所以,即使你使用 Boolean('false') 也会返回 true。因为它不是空字符串。字符串中任何有值(value)的东西都是 true。要解决这个问题,您可以使用:

Boolean(JSON.parse('false')) // false
Boolean(JSON.parse('true')) // true

所以,你可以这样做:

Boolean(JSON.parse(isWaiting))

或者,您也可以与字符串进行比较:

String(false) === 'false' // true

所以,使用:

console.log(String(isWaiting)) // will return false

关于javascript - 错误的变量不会验证为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52713017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com