第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

請教一個js里的循環(huán)問題。

請教一個js里的循環(huán)問題。

慕田峪8701529 2018-03-13 22:35:14
var?arr?=?[]?; for(var?i=0;i<10;i++){ arr[i]?=?function(){ console.log(i) } } arr[5]()?//這個打印結(jié)果為什么是10而不是5
查看完整描述

3 回答

?
安然桑丶

TA貢獻25條經(jīng)驗 獲得超1個贊

因為此時循環(huán)結(jié)束后, i是10, 因此不管你調(diào)用`arr[5]()`還是`arr[6]()`都是打印10.?

解決這種問題 ES3/5 可以使用閉包和自執(zhí)行函數(shù). 最簡潔的還是將`var`聲明替換為`let`. 不過這是ES6的語法.


ES3/5方式:

var?arr?=?[]?;
for(var?i=0;i<10;i++){
??arr[i]?=?(function(i){
????return?function?()?{
??????console.log(i)
????}
??})(i)
}
arr[5]()????//?5
arr[9]()????//?9


查看完整回答
反對 回復 2018-03-14
?
慕勒7123956

TA貢獻35條經(jīng)驗 獲得超15個贊

你把var變成let 就是你想要的了,因為函數(shù)里面只是一個console.log() 動作.里面的變量i是這10個函數(shù)公用的一個變量。所以循環(huán)結(jié)束,i就變成了10.

用let的話,就是把每一個循環(huán)變成了塊級作用域,也可以利用函數(shù)作用域

arr[i]=function(){
var?temp=i;
console.log(temp);
}
}


查看完整回答
反對 回復 2018-03-14
?
anet

TA貢獻79條經(jīng)驗 獲得超19個贊

注意看循環(huán)體

只是簡單的賦值操作而已

循環(huán)結(jié)束,i的值為10,這個時候輸出自然為10

查看完整回答
反對 回復 2018-03-13
  • 3 回答
  • 0 關(guān)注
  • 1732 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號