在 localStorage 中存储 boolean 值,这个值被转换为字符串。
现在尝试将此值从 localStorage 转换回 boolean 值,我需要使用 JSON.parse()
方法,更方便的 !!
不起作用。
代码示例:
var test = false;
localStorage['test'] = test;
console.log("JSON.parse returns: ", JSON.parse(localStorage['test']), "expected: ", test);
console.log("'!!' returns: ", !! localStorage['test'], "expected: ", test);
-jsFiddle-
我很困惑为什么会出现这种行为。有什么解释吗?
PS:这里使用 getter/setter localStorage 方法无关紧要,结果相同。
最佳答案
本地存储存储字符串,恐怕,无论输入是什么(如果你用一个对象喂它,它会用它的标准 toString()
方法自动转换)......所以你正在做 !!对一个字符串进行测试
,该字符串始终为 true
。
在处理存储在 DOM storage 中的内容时,您应该始终使用 JSON.stringify()
和 JSON.parse()
关于javascript - localStorage 和 boolean 值 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644250/