re: JavaScript Closure Simply Explained VIEW POST

TOP OF THREAD FULL DISCUSSION
re: I see that you made the edit! But that is not actually what happens when you run the code. The code you wrote prints 0-4 (all indexes) after 20...

They print all at once because all setTimeout starts at same time and for all setTimeout 1 second passes at same time. What you want can be achieved by passing timeout values to 1000, 2000, 3000....

Following code will give you that output:

for(var i=0; i<5; i++) {
  setTimeout((function(index) {
    return function() {
      console.log(index);
    }
  }(i)), 1000 * i)
}
code of conduct - report abuse