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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

正在回答

2 回答

不明覺厲


0 回復(fù) 有任何疑惑可以回復(fù)我~

這涉及到j(luò)avascript中閉包,作用域,引用的概念。

// 這段代碼是錯誤的

// 每個星星節(jié)點(diǎn)的點(diǎn)擊事件

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

? stars[i].onclick=function(){

? ? getStar(i);

? }

}


當(dāng)前作用域總是能夠訪問外部作用域中的變量。

onclick函數(shù)總是能夠訪問到 window.onload 函數(shù)作用域中的變量i,

但是onclick函數(shù)沒有復(fù)制這個變量,只是引用了。


onload函數(shù)執(zhí)行完后,其中的變量i沒有銷毀,因?yàn)閛nclick函數(shù)引用了,

但是這個時候循環(huán)已經(jīng)執(zhí)行完畢,i的值變成了5。


當(dāng)onclick函數(shù)觸發(fā)執(zhí)行時,獲取變量i的值時,自然取到的是5,而不是星星對應(yīng)的序號。



解決辦法:復(fù)制一份。

// 每個星星節(jié)點(diǎn)的點(diǎn)擊事件

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

!function(index) {

stars[index].onclick=function(){

getStar(index);

}

}(i);

}


利用自執(zhí)行函數(shù),將i作為參數(shù)傳入,index成為i的拷貝。

再把index放入onclick函數(shù)中即可。


更多關(guān)于閉包和作用域的知識,可參考javascript秘密花園文檔:

http://www.jb51.net/onlineread/JavaScript-Garden-CN/#function.closures


1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
人人網(wǎng)評論功能
  • 參與學(xué)習(xí)       27694    人
  • 解答問題       155    個

仿人人網(wǎng)評論,讓你的網(wǎng)頁活躍起來,趕快來學(xué)習(xí)讓功能的實(shí)現(xiàn)吧

進(jìn)入課程
微信客服

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

幫助反饋 APP下載

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

公眾號

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