在我目前的项目中,我使用javascripts localStorage来存储一些数据。由于此数据在之后进行了解析,因此我需要将其设置为默认值(如果尚未存在)。为此,我使用简单的if-check:不幸的是,它不起作用。这是我的代码:
localStorage.setItem("myItem", null); //Test for the if-check. But even without it isnt working.
if(localStorage.getItem("myItem") == undefined || localStorage.getItem("myItem") == null || localStorage.getItem("myItem") == ""){
console.log("is null");
localStorage.setItem("myItem", "myDefaultContent");
}
console.log(localStorage.getItem("myItem")); //null!
我该如何解决这个问题?
答案 0 :(得分:5)
当您设置localStorage.setItem("myItem", null);
时,您确实将myItem
设置为字符串“null”,而不是null
类型。请注意,localStorage
值始终字符串。在您的情况下,null
在存储之前会转换为字符串。
所以检查
localStorage.getItem("myItem") == null || localStorage.getItem("myItem") == undefined
当然是false
,默认值永远不会设置。
如果您将myItem
设置为"null"
字符串,那么您也应该检查字符串:
localStorage.getItem("myItem") === "null"
或者更好的是,不要首先设置null
,并且null / undefined比较将按预期工作。