1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
你這樣寫,有很多問題啊。你在for循環(huán)里定義了函數(shù)aaa,并沒有調(diào)用函數(shù)aaa,所以,i根本沒有傳入到aaa中。
并且你在for循環(huán)里創(chuàng)建函數(shù),每輪for循環(huán)結(jié)束,該函數(shù)就無法被調(diào)用了,這里的aaa,每次產(chǎn)生的都是新的函數(shù)
var a = {};
console.log(D); // undefined
for(var i=0;i<2;i++){
function D(){
console.log('0');
}
a[i] = D;
}
console.log(a[0]==a[1]); // false
在for循環(huán)里聲明的函數(shù),每次產(chǎn)生都是不同的函數(shù),我在上面,將D放入一個(gè)obj中,for循環(huán)后比較,返回false證明了這點(diǎn)
你的代碼,與下面的代碼,是等價(jià)的
window.onload=function(){
var aaa; // 修改的地方
console.log(aaa); //undefined
var arrLi=document.getElementsByTagName("li");
console.log(arrLi,"arrLi");
for(var i=0;i<3;i++){
console.log(i,"i");
aaa = function(i){ // 修改的地方
console.log(i,"aaa里面的i")
arrLi[i].onclick=function(){
alert(i)
}
}
console.log(aaa);
}
}
你在for循環(huán)里,使用function aaa(){}創(chuàng)建函數(shù),其實(shí),這里的變量aaa會(huì)被變量提升到頂部,
然后在for循環(huán)里對(duì)這個(gè)aaa賦值.所以,這里是被覆蓋了
添加回答
舉報(bào)