轮播图中的一个疑问
Opened this issue · 1 comments
zzjd commented
请问轮播图JS代码中
for(var i = 0; i < 4; i++){
(function (j) {
li[j].addEventListener('click',function () {
clearInterval(timer);
index = j;
moveTo(index);
timer = setInterval(disPlay,2000);
})
}(i))
}
应该如何理解呢?j是如何来的,以及“(i)”的意义是什么呢?
facsli1997 commented
立即执行函数,把i传给j。轮播图是给每一个li添加点击事件,点击事件是延迟执行,而for循环是立即执行。如果没有立即执行函数(function(j){//******})(i),当点击事件触发时,for循环已经结束了,每一个的index已经变成2了。通过立即执行函数及时地把i传进去。