var a = 5;
function loop(a){
for( var i = 0; i < a; i++){
console.log(i);
(function(i){
setTimeout(loop(i),0);
})(i);
}
}
loop(a);上述代码,想知道运行过程和原理,请大家帮一下忙,谢谢
function loop(a){
for( var i = 0; i < a; i++){
console.log(i);
(function(i){
setTimeout(loop(i),0);
})(i);
}
}
loop(a);上述代码,想知道运行过程和原理,请大家帮一下忙,谢谢
setTimeout虽然是异步执行,但是并不是排到所有同步队列的后面,而是排到当前块的同步队列的后面。
你setTimeout(loop(i),0);是错误是,这是立即执行loop(i),把loop(i)执行的返回值(也就是undefined)传给setTimeout。
正确的应该是setTimeout(function(){loop(i)},0);