我的函数内为什么访问不了i呢 反对法大幅度反对法

img

我的函数内为什么访问不了i呢
输出不了i ,闭包函数不是可以访问函数外部的变量的吗

这个i应该输出的一直是你的数组的长度 你把var 改成let就可以了

因为你循环执行很快,你在函数调用的时候循环已经结束了,i已经是最后的值了

如果代码没问题的话不存在输出不了i.而且你这个写法也不是闭包,触发mousuover事件,输出的i一直都是slid_i的长度.想要得到每一个i,要么将var换乘let,要么将slid_i[i].addEventListener用一个function封装起来,将i传入进去

for(var i=0;i<slid_i.length;i++){
addclick(i)
}
function addclick(i){
slid_i[i].addEventListener('mouseover',function(){
console.log(i)
})
}