繁体   English   中英

为什么if(undefined)评估为true?

[英]Why is if (undefined) evaluating to true?

我是JavaScript的新手,并且遇到了一个看似明显的问题。

const item = sessionStorage.getItem('item'); // undefined
if (item) {
    return item;
}

在Chrome调试器中,我可以看到该项目未定义 我希望条件失败。 令我惊讶的是,它正在评估为真。

我以为我已经测试了这个。 为什么它会在有条件的情况下回归?

我遇到过其他检查,例如如何在JavaScript中检查“未定义”所推荐的检查? 但是......为什么我要为这样一个简单的检查做一些甚至远程“复杂”的事情呢? 上面的方法看起来如此简单和优雅,我不愿意失去它。

我也在https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage上的示例中看到了这种方法。

undefined从sessionStorage获得undefined的值,而是字符串"undefined" ,这与任何其他非空字符串一样真实。

我知道你没有得到undefined的价值,因为这是不可能的。 sessionStorage.getItem只能返回一个字符串或null 另请注意, setItem会将其参数强制转换为字符串,因此sessionStorage.setItem('item', undefined)将item设置为字符串"undefined"

如果要删除项目,则应使用sessionStorage.removeItem('item'); 而不是将其设置为undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM