我注意到我无法设置布尔值localStorage?
localStorage.setItem("item1", true);
alert(localStorage.getItem("item1") + " | " + (localStorage.getItem("item1") == true));
Run Code Online (Sandbox Code Playgroud)
总是true | false在我尝试测试警报时localStorage.getItem("item1") == "true"发出警报...所以我无法将项目设置localStorage为true?
即使它是一个字符串,我认为只会===检查类型?
所以
alert("true" == true); // should be true?
Run Code Online (Sandbox Code Playgroud) 我无法理解代码中的一些奇怪的行为,我想知道是否有人能告诉我我做错了什么?
我有一个布尔变量isWaiting,并将其保存为false中localStorage,当它被检索到,它显示为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));
})()
Run Code Online (Sandbox Code Playgroud)
isWaiting = false
是假的吗?真正
isWaiting = false
是假的吗?false⬅ 这显然是错的,为什么会发生这种情况呢?
我究竟做错了什么?错误的布尔值是否会在某个localStorage过程中被破坏,如果是这样,我将如何解释它,如果没有,那么什么是错的?
基于那种答复帮助我确认,确实我的怀疑是,LS过程屠宰值类型是正确的,更具体地@提供的解决方案bhojendra-rauniyar,我已经改变了代码,以纠正检索时刻的类型权然后在整个代码中正常处理它,避免添加大量代码,似乎已经完成了这个技巧,谢谢大家的帮助.
...
var isWaiting = Boolean(JSON.parse(localStorage.getItem("isWaiting")));
...
Run Code Online (Sandbox Code Playgroud)