localStorage和boolean' string' [英] localStorage and boolean 'string'
问题描述
将布尔值存储在localStorage中,该值将转换为字符串.现在尝试将此值从localStorage转换回布尔值,我需要使用 JSON.parse()
方法,更方便的 !!
不起作用.
Storing boolean value in localStorage, this value is converted to string.
Now trying to converting back this value from localStorage to boolean, i need to use JSON.parse()
method, the more handy !!
doesn't work.
代码示例:
var test = false;
localStorage['test'] = test;
console.log("JSON.parse returns: ", JSON.parse(localStorage['test']), "expected: ", test);
console.log("'!!' returns: ", !! localStorage['test'], "expected: ", test);
我很困惑为什么这种行为.有什么解释吗?
I'm quite confused why this behaviour. Any explaination?
PS:在这里使用getter/setter localStorage方法并不重要,结果相同.
PS: using getter/setter localStorage methods doesn't matter here, same result.
推荐答案
恐怕本地存储会存储字符串,无论输入是什么(如果您将其与对象一起输入,它将自动以其标准进行转换)toString()
方法)...所以您正在做!测试
在字符串上,该字符串始终为 true
.
Local storage stores strings , I'm afraid, whatever the input (if you feed it with an object, it will be converted automatically with its standard toString()
method)... So you're doing !! test
on a string, which is always true
.
You should always use JSON.stringify()
and JSON.parse()
when dealing with what you store in DOM storage
这篇关于localStorage和boolean' string'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!