搜尋

首頁  >  問答  >  主體

javascript - 為什麼結果是3不是2呢?

雷雷
学习ing学习ing2750 天前744

全部回覆(4)我來回復

  • 迷茫

    迷茫2017-06-26 10:59:37

    for(i=0;i<3;i++){循環體}執行過程是賦初值0,然後執行判斷語句i<3,為true的話,執行循環體,循環體執行完之後執行i++;所以當i執行到2的時候,i<3為true,執行循環體,然後i++,此時i等於3,然後判斷i<3,判斷為false,不執行循環體,退出循環,此時i=3;

    回覆
    0
  • 巴扎黑

    巴扎黑2017-06-26 10:59:37

    最後一次for循環過後,i++把i變成了3

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-26 10:59:37

    此題用斷點方式很容易就看出來了,其實就是函數執行時機的問題,函數是在呼叫時才執行,循環執行完後,i=3,再呼叫數組內的函數時,i只能為3.

    回覆
    0
  • 学习ing

    学习ing2017-06-26 10:59:37

    js順序執行,先執行所有的循環,在執行的過程中以此arr[0]= function(){return i;},arr[1]= function(){return i;},arr[2] = function(){return i;}同時i循環後程式3,接著呼叫arr[0]()等呼叫的時候,此時作用域內的i是3,所以依序會是3.

    PS: 這題應該會先執行arr = F()把,否則會報錯呀~~

    回覆
    0
  • 取消回覆