为什么(未定义)评估为true?

时间:2018-11-14 22:25:11

标签: javascript undefined

我是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的示例中也看到了这种方法。

1 个答案:

答案 0 :(得分:10)

您不是从sessionStorage中获得值undefined,而是字符串"undefined",这与其他任何非空字符串一样,是正确的。

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

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