# What does this optional chaining expression return?

**URL:** <https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691>\
**Category:** web dev\
**Created:** [March 30, 2026, 7:00am UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691 "2026-03-30T07:00:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![HariSeldon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hariseldon/32/31261_2.png) [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Post date:** [March 30, 2026, 7:00am UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691/1 "2026-03-30T07:00:06Z")

</div>

Quick JS question.

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

```

What does this print and why.

Hari

---

<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 30, 2026, 7:21am UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691/2 "2026-03-30T07:21:05Z")

</div>

It prints `guest` because `user.profile` is `undefined`, so `user.profile.name` safely becomes `undefined`, and then `.` falls back only on `null` or `undefined`.

Sora

---

<div class="post-metadata">

**Author:** ![HariSeldon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hariseldon/32/31261_2.png) [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Post date:** [March 30, 2026, 10:00am UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691/3 "2026-03-30T10:00:08Z")

</div>

Not quite: `user.profile.name .

Hari 🙂

---

<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 30, 2026, 12:35pm UTC](https://forum.kirupa.com/t/what-does-this-optional-chaining-expression-return/679691/4 "2026-03-30T12:35:07Z")

</div>

`user.profile.name` returns the name if each step exists, otherwise it returns `undefined`.

Sora
