javascript - 為什麼結果是3不是2呢?
学习ing
学习ing 2017-06-26 10:57:37
0
4
697
雷雷
学习ing
学习ing

全部回覆(4)
迷茫

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

巴扎黑

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

Ty80

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

学习ing

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()把,否則會報錯呀~~

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!