setTimeout (function(){   alert("A");},0);alert("b"); 这个代码为什么是先出来B,再出来A呢

解决方案 »

  1.   

    你是不是认为setTimeout设置为0,应该是即时执行啊?其实不然。
      

  2.   

    If the currently running task is a task that was created by the setTimeout() method, and timeout is less than 4, then increase timeout to 4.
      

  3.   

    做个顺水人情吧,翻译一下:setTimeout 定时运行的方法最短时间为 4 毫秒
      

  4.   

    其实和4毫秒没关系
    测试下面代码
    alert("A");
    setTimeout (function(){ alert("B");},0);
    alert("C");无论在弹出A框等待多久时间,都会弹出C先。。这和js的单线程原理有关系
      

  5.   

    不用谈深了,否则就说不完了,你懂的
    参考 http://ejohn.org/blog/how-javascript-timers-work/
      

  6.   


    呵呵。其实我不想太多人误会了setTimeout
      

  7.   

    setTimeout (function(){ alert("A");},0);alert("b"); 
    难道会先弹出b,然后等待四毫秒,然后再弹出a?
      

  8.   

    是4毫秒后把任务放到线程队列中,然后等待前面的任务完成后立刻执行setTimeout (function(){ alert("A");},3000);alert("b"); 如果alert你等待超过3000毫秒后点确定,alert("A")会立刻执行
      

  9.   

    http://blog.csdn.net/legend1988/article/details/6971588