采用自执行的匿名函数解决for循环使用闭包的问题


Posted in Javascript onSeptember 11, 2014

这段代码输出的是10个10而不是期望的0到9,因为闭包内是对i的引用,然后函数执行时i已经变成了10

function f1(){
for(var i = 0; i < 10; i++) {
setTimeout(function() {
alert(i); 
}, 1000);
}
}
f1();

解决以上的问题可以采用自执行的匿名函数

function f2(){
for(var i = 0; i < 10; i++) {
(function(e) {
setTimeout(function() {
alert(e); 
}, 1000);
})(i);
}
}
f2();

这里的匿名函数将i作为参数,这里的e会有i的一个拷贝,而引用时是对e的引用,这就避免了上述的问题

Javascript 相关文章推荐
javascript 动态修改样式和层叠样式表代码
Apr 27 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
JavaScript中常用的运算符小结
Jan 18 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
May 19 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
react native与webview通信的示例代码
Sep 25 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
解决vue项目 build之后资源文件找不到的问题
Sep 12 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
MutationObserver在页面水印实现起到的作用详解
Jul 07 Javascript
Extjs grid panel自带滚动条失效的解决方法
Sep 11 #Javascript
用js传递value默认值的示例代码
Sep 11 #Javascript
js图片实时加载提供网页打开速度
Sep 11 #Javascript
jQuery 复合选择器应用的几个例子
Sep 11 #Javascript
使用js dom和jquery分别实现简单增删改
Sep 11 #Javascript
sogou地图API用法实例教程
Sep 11 #Javascript
当前流行的JavaScript代码风格指南
Sep 10 #Javascript
You might like
php防盗链的常用方法小结
2010/07/02 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
20个PHP常用类库小结
2011/09/11 PHP
php中常用的预定义变量小结
2012/05/09 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
网页javascript精华代码集
2007/01/24 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
numpy中索引和切片详解
2017/12/15 Python
Python中的取模运算方法
2018/11/10 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
strstr()的简单实现
2013/09/26 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
泰山导游词
2015/02/02 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python