即使在空检查后,localStorage为null?

时间:2015-03-06 20:27:00

标签: javascript if-statement null local-storage

在我目前的项目中,我使用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!

我该如何解决这个问题?

1 个答案:

答案 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比较将按预期工作。