window.onload=function(){
var arrLi=document.getElementsByTagName("li")
console.log(arrLi,"arrLi");
for(var i=0;i<3;i++){
console.log(i,"i");
function aaa(i){----->问题1此处的传参i为什么不能被传入,问题二这样写这个aaa函数是叠加的吗,还是被后面的aaa覆盖了
console.log(i,"aaa里面的i")
arrLi[i].onclick=function(){
alert(i)
}
}
console.log(aaa);
}
}
你这样写,有很多问题啊。你在for循环里定义了函数aaa,并没有调用函数aaa,所以,i根本没有传入到aaa中。
并且你在for循环里创建函数,每轮for循环结束,该函数就无法被调用了,这里的aaa,每次产生的都是新的函数
在for循环里声明的函数,每次产生都是不同的函数,我在上面,将D放入一个obj中,for循环后比较,返回false证明了这点
你的代码,与下面的代码,是等价的
你在for循环里,使用function aaa(){}创建函数,其实,这里的变量aaa会被变量提升到顶部,
然后在for循环里对这个aaa赋值.所以,这里是被覆盖了