1 回答
TA贡献1829条经验 获得超7个赞
你这样写,有很多问题啊。你在for循环里定义了函数aaa,并没有调用函数aaa,所以,i根本没有传入到aaa中。
并且你在for循环里创建函数,每轮for循环结束,该函数就无法被调用了,这里的aaa,每次产生的都是新的函数
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循环里声明的函数,每次产生都是不同的函数,我在上面,将D放入一个obj中,for循环后比较,返回false证明了这点
你的代码,与下面的代码,是等价的
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循环里,使用function aaa(){}创建函数,其实,这里的变量aaa会被变量提升到顶部,
然后在for循环里对这个aaa赋值.所以,这里是被覆盖了
添加回答
举报