咩咩咩3124927
2016-09-28 20:00:52
for(var?i=0;i<5;i++){
???function?f(){
??????console.log(i);
???}
}
f();這段代碼最后輸出的是5。但是我理解的是遍歷數組之后輸出的不應該是1,2,3,4嗎?麻煩懂得同學幫忙詳細解釋下。多謝!
7 回答
已采納

小白師兄
TA貢獻55條經驗 獲得超37個贊
首先你要記住一個事情,函數是要經過調用才能執行的!在你的代碼中,首先會執行for循環,在循環里面,雖然定義了f()函數,但是沒有進行調用,所以,循環就從i=0,循環到i=5;但是沒有辦法執行f()函數,里面的console自然沒運行,所以循環唯一的結果就是i從0走到了5然后循環結束;
然后執行f()函數,因為這里被調用了,會執行以此console,但是這個時候i已經是5了,所以只輸出5;
你說的那個結果應該這樣寫:
?function?f(){ ????for(var?i=0;i<5;i++){? ??????console.log(i); ???} } f();
一上來就直接執行被調用的f(),在函數里面直接循環5次,結果就是0,1,2,3,4
添加回答
舉報
0/150
提交
取消