采用自执行的匿名函数解决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语句可以不以;结尾的烦恼
Mar 08 Javascript
jquery tools 系列 scrollable学习
Sep 06 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
jquery的live使用注意事项
Feb 18 Javascript
JavaScript事件委托的技术原理探讨示例
Apr 17 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
AngularJS中的过滤器使用详解
Jun 16 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
分享15个最受欢迎的Python开源框架
2014/07/13 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python requests使用socks5的例子
2019/07/25 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Python 如何查找特定类型文件
2020/08/17 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
什么是类的返射机制
2016/02/06 面试题
教育学专业实习生的自我鉴定
2013/11/26 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
部队2014年终工作总结
2014/11/27 职场文书
学生病假条怎么写
2015/08/17 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
导游词之临安白水涧
2019/11/05 职场文书
全网非常详细的pytest配置文件
2022/07/15 Python