![](/img/trans.png)
[英]undefined is not a function (evaluating '_this4.changeVisibilityFilterModal(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.