亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript for循環輸出問題

JavaScript for循環輸出問題

咩咩咩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

查看完整回答
2 反對 回復 2016-09-28
  • 咩咩咩3124927
    咩咩咩3124927
    謝謝,我明白了!好人一生平安!
  • fantacy吳貝
    fantacy吳貝
    這樣確實console.log(),可以向控制臺輸出0到5,for循環會從開始跑到結束這點你也明白了,當你學到setInterval()和setTimeout,要用它們來控制循環的時候,比如1s循環進行一次,那時又會有新問題,要想深一點,控制循環的語句return continue break這些也可以實現,那些要放在循環體中應該想清楚
?
杜發明

TA貢獻202條經驗 獲得超301個贊

循環體不能寫方法體外部,這么給你說吧,一切的邏輯方法操作都先有的方法再有實體。

查看完整回答
反對 回復 2016-09-29
?
咕咕問

TA貢獻78條經驗 獲得超12個贊

(function(d){console.log(d);})("ccc")

查看完整回答
反對 回復 2016-09-29
?
咕咕問

TA貢獻78條經驗 獲得超12個贊

閉包 ? ?外部通過函數內部的方法調用函數中的成員變量,這個成員變量一直存在,直到方法結束。

查看完整回答
反對 回復 2016-09-29
?
Mr_SL

TA貢獻1條經驗 獲得超0個贊

循環了5次但是沒有調用f(),f()里的console.log(i),只有i變化了,但是f()沒有輸出。

查看完整回答
反對 回復 2016-09-28
?
我是大牛你信么

TA貢獻9條經驗 獲得超2個贊

你的寫法是將f函數定義了五次
查看完整回答
反對 回復 2016-09-28
?
摩訶迦葉

TA貢獻146條經驗 獲得超54個贊

寫反了。?

? function?f(){

for(var?i=0;i<5;i++){

??????console.log(i);

???}

}


查看完整回答
反對 回復 2016-09-28
  • 7 回答
  • 3 關注
  • 2197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號