采用自执行的匿名函数解决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 相关文章推荐
读jQuery之九 一些瑕疵说明
Jun 21 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JS画线(实例代码)
2013/11/20 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
初中升旗仪式演讲稿
2014/05/08 职场文书
战友聚会策划方案
2014/06/13 职场文书
离婚协议书怎么写
2015/01/26 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
在职证明书模板
2015/06/15 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏