I know that floating point variables require work arounds when dealing with 0.1, 0.2, 0.3 etc.. but this seems unusual?
for(var i=0;i<10;i=i+1){
  console.log("before timeout" + i/10); //returns 0.1 0.2 0.3 etc
  setTimeout(function(){
    console.log("after timeout" + i/10); //returns 1 1 1 etc
  },1000); 
}
 
     
     
     
    