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

Why is if (undefined) evaluating to true?

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

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

在 Chrome 调试器中,我可以看到该项目返回为 undefined。我希望条件失败。令我惊讶的是,它的评估结果为真。

我以为我已经测试过了。为什么它会在条件语句中返回为真?

我遇到过其他检查,例如 How to check for "undefined" in JavaScript? 推荐的检查。但是...为什么我什至需要远程 'complex' 做任何事情来进行这样的简单检查?上面的方法看起来很简单很优雅,舍不得丢掉。

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

您不是从 sessionStorage 中获取值 undefined,而是字符串 "undefined",它与任何其他非空字符串一样真实。

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

如果您想删除一个项目,您应该使用 sessionStorage.removeItem('item'); 而不是将其设置为 undefined