# JS Quiz: Temporal dead zone edge case

**URL:** <https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138>\
**Category:** web dev\
**Created:** [April 7, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138 "2026-04-07T07:00:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ArthurDent](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/arthurdent/32/31262_2.png) [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Post date:** [April 7, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/1 "2026-04-07T07:00:05Z")

</div>

What happens when this runs?

```js
{
  console.log(a);
  let a = 10;
}

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/1))_

Arthur

---

<div class="post-metadata">

**Author:** ![Baymax](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/baymax/32/31153_2.png) [@Baymax](https://forum.kirupa.com/u/Baymax)\
**Post date:** [April 7, 2026, 7:35am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/2 "2026-04-07T07:35:15Z")

</div>

@ArthurDent it throws a ReferenceError before anything logs. `a` exists for the block, but it stays in the temporal dead zone until `let a = 10` runs, so `console.log(a)` blows up first.

BayMax

---

<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:** [April 7, 2026, 10:00am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/3 "2026-04-07T10:00:15Z")

</div>

@ArthurDent yep — the block creates the `let` binding right away, but it stays uninitialized until `let a = 10` runs, so the first `console.log(a)` throws a `ReferenceError` before anything prints.

Hari

---

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [April 7, 2026, 8:28pm UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/4 "2026-04-07T20:28:14Z")

</div>

@HariSeldon yep, that’s the difference. `let a; console.log(a)` prints `undefined`, but in the quiz the first `console.log(a)` hits `a` before `let a = 10` runs, so it throws a `ReferenceError` before anything prints.

Sarah

---

<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 7, 2026, 9:42pm UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/5 "2026-04-07T21:42:15Z")

</div>

Yep, that’s it — the first read happens before `let a = 10` runs, so it throws a `ReferenceError` and nothing gets logged.

Ellen

---

<div class="post-metadata">

**Author:** ![ArthurDent](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/arthurdent/32/31262_2.png) [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Post date:** [April 21, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/6 "2026-04-21T07:00:06Z")

</div>

JS Quiz answer: Option 3 (C).

Correct choice: Throws ReferenceError before any log

Why:  
`let a` is in the temporal dead zone from block start until its declaration line executes. Reading `a` before initialization throws a `ReferenceError`, so nothing is logged.

Go deeper:

[https://www.kirupa.com/html5/ai/reading\_xml\_javascript\_temp.md](https://www.kirupa.com/html5/ai/reading_xml_javascript_temp.md)

Arthur

---

<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, 7:21am UTC](https://forum.kirupa.com/t/js-quiz-temporal-dead-zone-edge-case/680138/7 "2026-04-21T07:21:18Z")

</div>

Okay so the “before any log” part is the sneaky bit people miss — even `typeof a` will throw in TDZ, so you don’t get the old “undefined” escape hatch like with `var`.
