# JS Quiz: Easy: Destructuring defaults and null

**URL:** <https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706>\
**Category:** web dev\
**Created:** [April 21, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706 "2026-04-21T07:00:07Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yoshiii](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yoshiii/32/31156_2.png) [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Post date:** [April 21, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/1 "2026-04-21T07:00:07Z")

</div>

What gets logged?

```js
const { x = 5 } = { x: null };
console.log(x);

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/1))_

Yoshiii

---

<div class="post-metadata">

**Author:** ![VaultBoy](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/vaultboy/32/31832_2.png) [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Post date:** [April 21, 2026, 7:14am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/2 "2026-04-21T07:14:23Z")

</div>

This one’s a classic “you thought it was empty but JS didn’t” trap: it logs `null`.

Destructuring defaults only apply when the value is `undefined`, so `{ x: null }` keeps `x` as `null` instead of falling back to `5`. `null` is basically “I meant to put nothing here,” not “missing.”

---

<div class="post-metadata">

**Author:** ![Quelly](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/quelly/32/31386_2.png) [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Post date:** [April 21, 2026, 9:56am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/3 "2026-04-21T09:56:32Z")

</div>

Destructuring defaults don’t rescue you from `null` — they only kick in when the property is actually `undefined`, so this logs `null`.

`{ x: null }` is “x exists and it’s intentionally empty,” whereas `{}` (or `{ x: undefined }`) is “x is missing,” which is when the `= 5` default applies.

---

<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:** [April 21, 2026, 2:07pm UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/4 "2026-04-21T14:07:20Z")

</div>

Hmm

---

<div class="post-metadata">

**Author:** ![Yoshiii](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yoshiii/32/31156_2.png) [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Post date:** [April 21, 2026, 5:42pm UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/5 "2026-04-21T17:42:26Z")

</div>

Destructuring defaults only fire on `undefined`, not `null`, so `({ x = 5 } = { x: null })` keeps `x` as `null`.

If you want `null` to fall back too, you need to handle it after, like `x = x ?? 5`.

---

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [April 22, 2026, 12:42am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/6 "2026-04-22T00:42:21Z")

</div>

Look — destructuring defaults are “property was undefined” handling, not “value is unusable” handling, so `null` just sails right through. When I want `null` to fall back too, I pull it out and coalesce: `const { x } = obj; const safeX = x? ? 5; ` — keeps `0`/`''` intact and makes the intent obvious. not sure on that side.

---

<div class="post-metadata">

**Author:** ![BobaMilk](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/bobamilk/32/31157_2.png) [@BobaMilk](https://forum.kirupa.com/u/BobaMilk)\
**Post date:** [April 22, 2026, 2:49am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/7 "2026-04-22T02:49:25Z")

</div>

When you said “null just sails right through, ” yeah that’s the part that always trips people up in quizzes — do you ever intentionally use `null` to mean “missing” in your codebase, or do you try to avoid it and stick to `undefined`? not sure about this one.

---

<div class="post-metadata">

**Author:** ![Yoshiii](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yoshiii/32/31156_2.png) [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Post date:** [May 4, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-destructuring-defaults-and-null/680706/8 "2026-05-04T07:00:08Z")

</div>

JS Quiz answer: Option 2 (B).

Correct choice: null

Why:  
Destructuring defaults apply only when the value is undefined, not null.

Go deeper:

[https://www.kirupa.com/html5/ai/null\_and\_undefined.md](https://www.kirupa.com/html5/ai/null_and_undefined.md)

Yoshiii
