sessionStorage - 将Item设置为null

时间:2016-06-29 13:29:01

标签: javascript

我检查sessionStorage Variable是否为null,如果为true,则使用“BAR”初始化它。否则,应该出现一个带有变量值的控制台消息。

sessionStorage.setItem("Foo", null); //I know this would make no sense at this part, this is just here for demo.

if (sessionStorage.getItem("Foo") == null) {
  sessionStorage.setItem("Foo", "BAR");
} else {
  console.log("Foo != null (proof = '", sessionStorage.getItem("Foo"), "')");
}

然而,它总是转到else语句,我得到控制台消息告诉我变量是“null”,但如果它真的是“null”那么为什么它没有用“BAR”初始化?< / p>

2 个答案:

答案 0 :(得分:10)

根据您的编辑,setItem要求传入的值为字符串(确切地说DOMString),其他任何内容都将被强制转换为字符串。

在您的情况下,您传递null,其被强制转移到"null"。当您致电getItem时,您会收到一个字符串,这不是null,因此您的代码会落入else块。

如果您确实要从存储中清除某个项目,请使用正确的方法removeItem

sessionStorage.removeItem("Foo");

现在调用getItem会导致返回值null,而不是"null"

答案 1 :(得分:1)

HTML5存储:sessionStorage或localStorage接受字符串。如果未传递字符串值,则会将其转换为字符串并保存。因此我们应该使用(JSON.stringify(value))将值转换为字符串,并且在获取之后我们应该再次将其转换为原始值。

var val = null;
//save to storage
sessionStorage.setItem('a',JSON.stringify(val));

//fetch from storage
var stringValue = sessionStorage.getItem('a');  //outputs "null"
var originalValue = JSON.parse(sessionStorage.getItem('a')); //outputs null