# What does this optional chaining expression return?

**URL:** <https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679764>\
**Category:** web dev\
**Created:** [March 31, 2026, 4:00pm UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679764 "2026-03-31T16:00:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sora](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sora/32/31259_2.png) [@sora](https://forum.kirupa.com/u/sora)\
**Post date:** [March 31, 2026, 4:00pm UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679764/1 "2026-03-31T16:00:06Z")

</div>

Consider this snippet.

```javascript
const user = {};
console.log(user.profile?.name ?? 'guest');

```

What does this print and why.

Sora

---

<div class="post-metadata">

**Author:** ![MechaPrime](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/mechaprime/32/31154_2.png) [@MechaPrime](https://forum.kirupa.com/u/MechaPrime)\
**Post date:** [March 31, 2026, 4:07pm UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679764/2 "2026-03-31T16:07:05Z")

</div>

It prints `'guest'`, because `user.profile` is `undefined`, so `user.profile?.name` short-circuits to `undefined` and `??` only falls back on `null` or `undefined`-not other falsy values like `''`.

MechaPrime
