我目前正在学习基础JavaScript课程,并且有一个例子, 这让我很困惑,因为似乎getItem()函数可以有两种返回类型。
if(!localStorage.getItem('name')) {
setUserName();
} else {
var storedName = localStorage.getItem('name');
myHeading.textContent =storedName;
}
因此,在if条件中,getItem返回true或false,具体取决于是否存在于localStorage中的Item。之后,返回值作为String存储在变量中,以便在网站上输出(在“else”部分中)。我搜索了这个并没有找到任何东西,但也许我搜索错了,所以我很高兴能得到任何帮助。我不知道,如果这段代码足以理解我的意思,但如果有必要,我会稍后发布。
答案 0 :(得分:2)
getItem
返回:
包含键值的DOMString。如果密钥不存在,则返回null。
什么是DOMString
?
DOMString是UTF-16字符串。由于JavaScript已经使用了这样的字符串,因此DOMString直接映射到String。
因此,它返回string
。字符串(除非它们是空的)被视为"truthy" in JS:
在JavaScript中,truthy值是在布尔上下文中计算时被视为true的值。所有值都是真实的,除非它们被定义为假(即,除了false,0,"",null,undefined和NaN)。
因此,换句话说,如果它返回一个非空字符串,那么if
语句认为它是真的。如果没有,则认为是错误的。
这也意味着您得出的结论,getItem
有"两种返回类型"是不正确的。它有一个返回类型,可以评估该类型的真实性。
答案 1 :(得分:0)
<强> Storage.getItem() 强>
存储接口的 getItem()方法,当传递密钥名称时, 将返回该键的值。
返回值
包含键值的DOMString。如果密钥不存在,则返回null。
if(!localStorage.getItem('name')) {
setUserName();
} else {
var storedName = localStorage.getItem('name');
myHeading.textContent =storedName;
}
您的代码段将检查本地存储是否包含密钥“名称”的项目。它不会返回布尔值(true / false),而是返回对象本身。如果密钥没有值,它将返回'null'。
localStorage.getItem('name')
返回:
setUserName()
。