Why does the code output the result as 10 for console.log(i).why didnt it print 1,2..10?
for(i=0;i<10;i++){
function abc(callback){
console.log(i);
setTimeout(callback,5000);
}
}
abc(function (){console.log(i)})
Why does the code output the result as 10 for console.log(i).why didnt it print 1,2..10?
for(i=0;i<10;i++){
function abc(callback){
console.log(i);
setTimeout(callback,5000);
}
}
abc(function (){console.log(i)})
May have a look at hoisting and function scoping. Your code will mainly look like this (in the parsers view)
for(i=0;i<10;i++){}
//i=1
//i=2
//i=3
//...
//i=10
function abc(callback){
setTimeout(callback,5000);
}
abc(function (){console.log(i)})//i is 10 :0
What i think you want:
function abc(callback){
for(var i=0;i<10;i++){
(function(i){//see 'closures in for loops' on SO
setTimeout(callback,5000);
})(i);
}
}
abc(()=>{alert(i)});//hehe