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

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

代碼輸出結果疑問

代碼輸出結果疑問

咩咩咩3124927 2016-09-25 01:15:10
var?fnArr=[]; for(var?i=0;i<10;i++){ ??fnArr[i]=function(){ ????return?i; ??}; } alert(fnArr[3]());最后輸出的結果是10.百思不得其解,可有同學幫我解釋下,多謝了.
查看完整描述

2 回答

已采納
?
阿旭_

TA貢獻217條經驗 獲得超353個贊

因為返回的變量是最終i的值。

如果只輸出fnArr即:alert(fnArr);會看到彈出來的都是方法function(){return i;}

i是在for中聲明的var i,最終for循環退出的時候,i是等于10的,所以不管你調用的是fnArr[3]()還是fnArr[4]()最終返回的i的結果都是10。

你可以試著在alert(fnArr[3]());之前加一句i=100,那返回的結果就是100

查看完整回答
2 反對 回復 2016-09-25
?
藍with黑

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

因為循環最后都是return 最后一個;

把i<10改成i<8,再運行一次,你應該就明白了。

或:

var fnArr=[];

for(var i=0;i<10;i++){

? fnArr[i]=function(){????????

??return i;

? };

}

//其實數組每項都是function(){return i},而在之前的循環后值已經是10;

for(var j=0;j<10;j++){

console.log(fnArr[j]());

}


查看完整回答
反對 回復 2016-09-25
  • 2 回答
  • 0 關注
  • 1601 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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