采用自执行的匿名函数解决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 学习笔记(十三)Dom创建表格
Jan 21 Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
Javascript显示和隐藏ul列表的方法
Jul 15 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
详解Vue This$Store总结
Dec 17 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
javascript每日必学之封装
2016/02/23 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
django的model操作汇整详解
2019/07/26 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Python reversed函数及使用方法解析
2020/03/17 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
电气专业推荐信范文
2013/11/18 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
旷课检讨书3000字
2014/02/04 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书