最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Why is if (undefined) evaluating to true? - Stack Overflow

programmeradmin4浏览0评论

I'm new to JavaScript and have hit what seems to be an obvious issue.

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

In the Chrome debugger I can see that item is ing back as undefined. I would expect the conditional to fail. To my surprise it's evaluating to true.

I thought I'd already tested this out. Why would it be ing back as true in the conditional?

I've e across other checks such as those remended by How to check for "undefined" in JavaScript?. But... why do I have to do anything even remotely 'plex' for a simple check like this? The above approach seems so simple and elegant I'm reluctant to lose it.

I'm also seeing this approach in an example on .

I'm new to JavaScript and have hit what seems to be an obvious issue.

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

In the Chrome debugger I can see that item is ing back as undefined. I would expect the conditional to fail. To my surprise it's evaluating to true.

I thought I'd already tested this out. Why would it be ing back as true in the conditional?

I've e across other checks such as those remended by How to check for "undefined" in JavaScript?. But... why do I have to do anything even remotely 'plex' for a simple check like this? The above approach seems so simple and elegant I'm reluctant to lose it.

I'm also seeing this approach in an example on https://developer.mozilla/en-US/docs/Web/API/Window/sessionStorage.

Share Improve this question edited Nov 14, 2018 at 22:31 Paul 142k28 gold badges284 silver badges271 bronze badges asked Nov 14, 2018 at 22:25 Shane GannonShane Gannon 7,7569 gold badges46 silver badges73 bronze badges 0
Add a ment  | 

1 Answer 1

Reset to default 13

You're not getting the value undefined from sessionStorage, but the string "undefined", which is truthy just like any other non-empty string.

I know you're not getting the value undefined because that is impossible. sessionStorage.getItem can only return a string or null. Also note that setItem will coerce its argument to a string, so sessionStorage.setItem('item', undefined) sets item to the string "undefined".

If you want to remove an item you should use sessionStorage.removeItem('item'); instead of setting it to undefined.

发布评论

评论列表(0)

  1. 暂无评论