Let
WIP
Example
for (var i = 0 ; i<=10 ; i++){
setTimeout(function(){
console.log(i); //display 6 10 times
}, i*1000);
}
First attempt to fix
for (var i = 0 ; i<=10 ; i++){
var a = i;
setTimeout(function(){
console.log(a);//display 6 10 times
}, a*1000);
}
Maybe use scope variable fixing
for (var i = 0 ; i<=10 ; i++){
(function(i) {
setTimeout(function(){
console.log(i);
}, i*1000);
})(i);
}
This works but bit verbose;
How about a let
for (var i = 0 ; i<=10 ; i++){
let a = i;
setTimeout(function(){
console.log(a);
}, a*1000);
}
This works as we are block scoping the var a
;