猿问

js闭包在循环语句中的一个问题

lis[i].onclick=(function(i){
returnfunction(){
alert(i)
}
})(i);
我上面这段代码没怎么看懂。。。为什么这样做之后,他就能按顺序弹出。
我被闭包弄得云里雾里啦。。求解答。谢啦
拉莫斯之舞
浏览 498回答 2
2回答

ABOUTYOU

这里有这个for循环案例的详解:[JS进阶]闭包,作用域链,垃圾回收,内存泄露实例2:给每个li添加点击事件varoli=document.getElementsByTagName('li');vari;for(i=0;i

蝴蝶刀刀

简单来说:利用闭包的特性把每一个i的值都存储在内存中。因为当点击时for循环已经结束,所以会弹出最后一个i的值。详细可以看看:详解js闭包
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答