关于for循环与闭包的一点点点笔记
来源:互联网 发布:一淘和淘宝联盟转换 编辑:程序博客网 时间:2024/04/30 01:16
今天做关于选项卡的练习时,遇到了有关闭包的一个小问题,记录之。
for(var i=0;i<5;i++){ alert(i); //0,1,2,3,4;}
然而,在循环内部添加事件函数时
for(var i=0;i<5;i++){ arr[i].onclick=function(){ alert(i); //5; } }
弹出的并不是我所盼望的0,1,2,3,4,而是5。因为在执行点击事件时,for循环已经执行完毕,此时闭包中的i向上查找,找到的就是循环结束后的变量i,即为5。
for(var i=0;i<5;i++){}alert(i) //5;
解决方案1:在循环内,将i作为数组的一个属性保存起来;
for(var i=0;i<5;i++){ arr[i].index=i; arr[i].onclick=function(){ alert(this.index); //0,1,2,3,4 }}
解决方案2:再加一层闭包,而i作为参数传递给内部函数;
for(var i=0;i<5;i++){ (function(arg){ arr[i].onclick=function(){ alert(arg); //0,1,2,3,4 } })(i)}
看来有关闭包方面的知识,还得再好好学习一下咯
0 0
- 关于for循环与闭包的一点点点笔记
- [点点搬家]关于闭包(closure)的小知识
- 闭包与for循环
- for循环与闭包
- 关于js for循环闭包的问题
- for循环的闭包
- for循环的闭包
- for循环绑定事件与闭包
- for 循环 addEventListener 与闭包实现
- js闭包与for循环
- 关于for循环中循环次数的设定的思路中有意思的一点
- 关于多重循环与break的一点疑惑
- 关于MYSQL的点点
- 关于Node的async包的一点笔记
- 循环缓冲区的一点笔记
- 关于for循环与for-each的效率比较
- 循环与闭包 之 for循环经典问题解释 / 结合《你不知道的JS》与《高程》案例
- oracle for循环,要注意的一点
- 设计模式----学习笔记
- postgres clog 学习
- IOS崩溃 异常处理(NSSetUncaughtExceptionHandler)
- 数组的一些方法
- 多线程实现文件(图片)从客户端并行上传到服务器端--多客户端实现文件上传到服务器
- 关于for循环与闭包的一点点点笔记
- T-sql实现一列转一行
- 41. First Missing Positive 第一个不在的正整数
- htop的使用
- Android Studio运行你的APP
- iOS开发支付集成之微信支付(3)
- 【opencv练习22 - Canny算子 边缘检测】
- javascript类型转换
- Android 替换应用内字体轻松又实用的方法