function readProperty(property)
{
console.log(localStorage[property]) //Alerts “null”
if(localStorage[property] == null)
{
console.log('Null chek')
return false;
}
return localStorage[property];
}
log输出"null",但'if()'不起作用。我试着用===,它也不起作用。请帮助。
UPD:谢谢大家这个改变帮助了我if(localStorage[property] == 'null')
用localStorage存储的键和值始终在UTF-16字符串格式,每个字符使用两个字节。与对象、整数键自动转换为字符串。
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
试题:
localStorage[property] === 'null'
虽然:console.log(localStorage[property])
可能报告null
,但实际值为undefined
。
所以,在你的if
语句中,如果你对undefined
进行测试,你会得到一个匹配。
更好的方法是使用:
来测试值是否存在。if(localStorage[property])... // Tests for any "truthy" value
或
if(!localStorage[property])... // Tests for any "falsey" value
嗯,我不知道你是否试图使用全局localStorage或如果它是一个定义变量在你的代码。
如果您正在使用localStorage
API,您应该检查是否存在这样的键…
if (!localStorage.getItem("my-item")) {
console.log("item doesn't exist.");
}
当键没有定义时,.getItem()
方法返回null
,因此使用!
或item !== null
检查是有效的。
.getItem()
reference from MDN, https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem.
您必须使用getItem()函数从localStorage获取项目,如
if(!localStorage.getItem(property) || localStorage.getItem(property)===null){
// there is no item in localStorage with the property name
}