我是JavaScript新手,遇到了一个显而易见的问题。
const item = sessionStorage.getItem('item'); // undefined
if (item) {
return item;
}
在Chrome调试器中,我看到该项目以 undefined 的形式返回。我希望条件失败。令我惊讶的是,它的评估结果是正确的。
我认为我已经对此进行了测试。为什么在有条件的情况下它会恢复为真?
我遇到了其他检查,例如How to check for "undefined" in JavaScript?建议的检查。但是...为什么我要做这样的简单检查甚至需要远程“复杂”操作?上面的方法看起来是如此简单而优雅,我不愿意失去它。
我还在https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage的示例中也看到了这种方法。
答案 0 :(得分:10)
您不是从sessionStorage中获得值undefined
,而是字符串"undefined"
,这与其他任何非空字符串一样,是正确的。
我知道您没有得到值undefined
,因为那是不可能的。 sessionStorage.getItem
只能返回字符串或null
。还要注意,setItem
会将其参数强制转换为字符串,因此sessionStorage.setItem('item', undefined)
将item设置为字符串"undefined"
。
如果要删除某个项目,则应使用sessionStorage.removeItem('item');
而不是将其设置为undefined
。