What does this JavaScript closure log?

Consider this snippet.

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

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