Javascript 本地存储变量被锁定为false
我试图在本地存储中切换真/假变量Javascript 本地存储变量被锁定为false,javascript,Javascript,我试图在本地存储中切换真/假变量 console.log("Toggling..."); console.log("Current:" + localStorage.item); console.log("Current is being changed to: " + !localStorage.item); localStorage.item = !localStorage.item; console.log("Current " + localStorage.item); 它的作用是:
console.log("Toggling...");
console.log("Current:" + localStorage.item);
console.log("Current is being changed to: " + !localStorage.item);
localStorage.item = !localStorage.item;
console.log("Current " + localStorage.item);
它的作用是:
首轮
Toggling...
(index):31 Current:undefined
(index):32 Current is being changed to: true
(index):34 Current true
第二轮
Toggling...
(index):31 Current:true
(index):32 Current is being changed to: false
(index):34 Current false
后续运行
Toggling...
(index):31 Current:false
(index):32 Current is being changed to: false
(index):34 Current false
为什么我的变量没有变回true?您不希望像这样直接在
localStorage
上设置属性。相反,使用setItem(key,value)
,getItem(key)
,和removietem(key)
示例来自:
以下代码段访问当前域的本地存储对象,并使用Storage.setItem()向其添加数据项
读取localStorage项的语法如下所示:
var cat = localStorage.getItem('myCat');
localStorage.removeItem('myCat');
删除localStorage项的语法如下所示:
var cat = localStorage.getItem('myCat');
localStorage.removeItem('myCat');
这样的话:
console.log("Toggling...");
console.log("Current:" + localStorage.getItem('item'));
console.log("Current is being changed to: " + !localStorage.getItem('item'));
localStorage.setItem('item', !localStorage.getItem('item'));
console.log("Current " + localStorage.getItem('item'));
实际上,您的布尔值在localStorage上存储为字符串 本地存储的类型。项将返回“字符串” 从这一点开始,长度>0的字符串被认为是真实的,即使它的值设置为
“false”
如果使用以下选项,也会发生这种情况:
考虑:
- 从本地存储中删除该项,而不是检查其负布尔值
- 使用JSON.parse()
console.log("Toggling...");
console.log("Current:" + localStorage.item);
console.log("Current is being changed to: " + !JSON.parse(localStorage.item));
localStorage.item = !JSON.parse(localStorage.item);
console.log("Current " + localStorage.item);
console.log("Toggling...");
console.log("Current:" + localStorage.item);
console.log("Current is being changed to: " + !JSON.parse(localStorage.item));
localStorage.item = !JSON.parse(localStorage.item);
console.log("Current " + localStorage.item);