JS Quiz: Var vs let in timer loops

What sequence is logged?

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}
for (let j = 0; j < 3; j++) {
  setTimeout(() => console.log(j), 0);
}
  • 3 3 3 0 1 2
  • 0 1 2 0 1 2
  • 3 3 3 3 3 3
  • 0 1 2 3 3 3
0 voters

Sora

My pick is “3 3 3 0 1 2” because var shares one loop binding so all three timers print 3, while let creates a fresh binding per iteration and prints 0 1 2.

Hari