为什么 JavaScript 空检查不起作用?


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或如果它是一个定义变量在你的代码。

如果您正在使用localStorageAPI,您应该检查是否存在这样的键…

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 
}

相关内容

  • 没有找到相关文章

最新更新