javascript - localStorage 和 boolean 值 'string'

标签 javascript html boolean local-storage

在 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/

相关文章:

arrays - 第 8 章 KNK C 编程(数组和 boolean 值)中重复数字工作示例的替代解决方案

javascript - 如果用户使用的是 IE 9 及更低版本,则使用 jQuery 显示 div

javascript - 表单验证没有发生

javascript - AngularJs 如何用另一个数组元素过滤 ngRepeat

控制台中的 Javascript slider 错误并且不滑动

c - 编写采用非空 double 组及其长度作为参数并返回 : 的函数

javascript - 如何使用下拉列表中的选定值显示数据库中的列表

javascript - 动态添加过滤器到 SVG

html - 为什么 POST 请求的 header 内容类型在 chrome 和 firefox 之间仅在 "UTF-8"与 "utf-8"之间有所不同?

javascript - OO Javascript 是否有 `to_bool` 或 `__len__` 等效项?