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

阿旭_
TA貢獻217條經(jīng)驗 獲得超353個贊
因為返回的變量是最終i的值。
如果只輸出fnArr即:alert(fnArr);會看到彈出來的都是方法function(){return i;}
i是在for中聲明的var i,最終for循環(huán)退出的時候,i是等于10的,所以不管你調(diào)用的是fnArr[3]()還是fnArr[4]()最終返回的i的結(jié)果都是10。
你可以試著在alert(fnArr[3]());之前加一句i=100,那返回的結(jié)果就是100

藍with黑
TA貢獻5條經(jīng)驗 獲得超0個贊
因為循環(huán)最后都是return 最后一個;
把i<10改成i<8,再運行一次,你應該就明白了。
或:
var fnArr=[];
for(var i=0;i<10;i++){
? fnArr[i]=function(){????????
??return i;
? };
}
//其實數(shù)組每項都是function(){return i},而在之前的循環(huán)后值已經(jīng)是10;
for(var j=0;j<10;j++){
console.log(fnArr[j]());
}
添加回答
舉報
0/150
提交
取消