localStorage和布尔'字符串'

A. *_*lff 5 javascript html5 boolean local-storage

在localStorage中存储布尔值,此值将转换为字符串.现在尝试将此值从localStorage转换回布尔值,我需要使用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);
Run Code Online (Sandbox Code Playgroud)

-jsFiddle-

我很困惑为什么会这样做.任何解释?

PS:使用getter/setter localStorage方法在这里无所谓,结果相同.

Tie*_*une 15

本地存储存储字符串,我担心,无论输入是什么(如果你用一个对象提供它,它将使用它的标准toString()方法自动转换)...所以你正在做!! test一个字符串,这是总是true.

您应该始终使用JSON.stringify()JSON.parse()处理存储在DOM存储中的内容


Sat*_*pal 5

JSON.stringify()保存对象时使用。如您所知,它将JavaScript值转换为JSON字符串,因此在JSON.parse()正确使用其转换后的情况下。

localStorage['test'] = JSON.stringify(test);
Run Code Online (Sandbox Code Playgroud)

演示