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);上述代码,想知道运行过程和原理,请大家帮一下忙,谢谢

解决方案 »

  1.   

    已经解决。
    setTimeout虽然是异步执行,但是并不是排到所有同步队列的后面,而是排到当前块的同步队列的后面。
      

  2.   

    你想干什么?
    你setTimeout(loop(i),0);是错误是,这是立即执行loop(i),把loop(i)执行的返回值(也就是undefined)传给setTimeout。
    正确的应该是setTimeout(function(){loop(i)},0);
      

  3.   

    Callback must be a function