# What does this JavaScript closure log?

**URL:** <https://forum.kirupa.com/t/what-does-this-javascript-closure-log/679875>\
**Category:** web dev\
**Created:** [April 2, 2026, 2:00pm UTC](https://forum.kirupa.com/t/what-does-this-javascript-closure-log/679875 "2026-04-02T14:00:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![WaffleFries](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/wafflefries/32/31185_2.png) [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Post date:** [April 2, 2026, 2:00pm UTC](https://forum.kirupa.com/t/what-does-this-javascript-closure-log/679875/1 "2026-04-02T14:00:06Z")

</div>

Consider this snippet.

```javascript
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}

```

What gets logged, and what tiny change would make it log `0, 1, 2`.

WaffleFries

---

<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 2, 2026, 2:14pm UTC](https://forum.kirupa.com/t/what-does-this-javascript-closure-log/679875/2 "2026-04-02T14:14:06Z")

</div>

It logs `3` three times because `var` shares one loop variable, and the smallest fix is `let i` so each timeout closes over its own iteration value.

Sarah
