解决方案 »

  1.   

    输出的结果为什么是>>>>>>>>>>>
    F1开始执行
    F2开始执行
    F2执行结束 
    F1执行结束 
      

  2.   


    <script type="text/javascript">
    function f1(){
     
          console.log("F1开始执行");
     
        setTimeout (function () {
     
            console.log("F1执行结束"); 
     
        },3000);
    }
     
     
    function f2(){
     
       console.log("F2开始执行");
       console.log("F2执行结束");
     
     
    }
     
      f1();
      f2();
    </script>就这样执行的!
      

  3.   

    f1() 怎么没执行完?
    setTimeout 只不过是设置定时器,在 3 秒后打印 “F1执行结束”
    其实 F1 早就执行完了
      

  4.   

    因为你用了定时器 function f1(){
     
          console.log("F1开始执行");
     
        setTimeout (function () {
     
            console.log("F1执行结束"); 
     
        },3000);
    }
     
     
    function f2(){
     
       console.log("F2开始执行");
       console.log("F2执行结束");
     
     
    }
     
        f1(); 
        f2(); F1开始执行  - 进入执行队列(F1执行结束)  -F2开始执行 -F2执行结束 -3秒(F1执行结束)  -
      

  5.   


    哦,你这么一说我突然反应过来了,还有一个问题为什么代码这么function f1(callback){ setTimeout (function () { console.log("F1开始执行"); for(var i=0;i<1000;i++){
     
    console.log(i); 

    }
    console.log("F1执行结束");  callback(); },5000);}
    function f2(){   console.log("F2开始执行");
       console.log(10+2);
       console.log("F2执行结束");}
    f1(f2);写就异步了!
      

  6.   

    涉及到主异步函数,与闭包。f1() 开始执行 -> 
    执行 console.log("F1开始执行") - > 
    setTimeout() 函数生成 timer 对象,同时回调函数, 进入 event queue  -> 
    f1()执行结束->
    f2()执行开始->
     执行console.log("F2开始执行") ->
     执行 console.log("F2执行结束") ->
    javascript 本身源代码执行完毕->
     开始执行 event queue 队列中的函数 -> 
    执行:  function(){
    console.log("F1 执行结束")
    }  (这个函数回到f1() 作用域内执行)-> 程序结束