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

BayMax

I would pick “3 3 3 0 1 2” because var shares one loop binding so all callbacks see i as 3, while let creates a fresh binding each iteration for 0 1 2.

Sora