采用自执行的匿名函数解决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 相关文章推荐
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
Javascript中的delete介绍
Sep 02 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
学习使用bootstrap3栅格系统
Apr 12 Javascript
js编写当天简单日历效果【实现代码】
May 03 Javascript
js判断复选框是否选中及选中个数的实现代码
May 30 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 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
Sony CFR 320 修复改造
2020/03/14 无线电
php 团购折扣计算公式
2011/11/24 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
深入解析koa之异步回调处理
2019/06/17 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
用Python进行行为驱动开发的入门教程
2015/04/23 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
python raise的基本使用
2020/09/10 Python
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
销售人员职业生涯规划范文
2014/03/01 职场文书
受伤赔偿协议书
2014/09/24 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
Python读取和写入Excel数据
2022/04/20 Python