localStorage 即使在 null 检查之后仍为 null?
localStorage null even after null-check?
在我当前的项目中,我使用 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!
我该如何解决这个问题?
当您设置 localStorage.setItem("myItem", null);
时,您实际上将 myItem
设置为 string "null",而不是 null
类型。请记住,localStorage
值是 always 字符串。在您的情况下, null
在存储之前被转换为字符串。
所以支票
localStorage.getItem("myItem") == null || localStorage.getItem("myItem") == undefined
当然是false
,而且永远不会设置默认值。
如果您将 myItem
设置为 "null"
字符串,那么您也应该检查字符串:
localStorage.getItem("myItem") === "null"
或者更好的是,首先不要设置 null
,null/undefined 比较将按预期进行。
在我当前的项目中,我使用 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!
我该如何解决这个问题?
当您设置 localStorage.setItem("myItem", null);
时,您实际上将 myItem
设置为 string "null",而不是 null
类型。请记住,localStorage
值是 always 字符串。在您的情况下, null
在存储之前被转换为字符串。
所以支票
localStorage.getItem("myItem") == null || localStorage.getItem("myItem") == undefined
当然是false
,而且永远不会设置默认值。
如果您将 myItem
设置为 "null"
字符串,那么您也应该检查字符串:
localStorage.getItem("myItem") === "null"
或者更好的是,首先不要设置 null
,null/undefined 比较将按预期进行。