采用自执行的匿名函数解决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中面向对象技术的模拟
Sep 25 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
JsRender for index循环索引用法详解
Oct 31 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
Feb 28 Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 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 cli换行示例
2014/04/22 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
php简单实现数组分页的方法
2016/04/30 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
讲解Python中if语句的嵌套用法
2015/05/14 Python
使用python实现链表操作
2018/01/26 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
Django--权限Permissions的例子
2019/08/28 Python
Python实现数值积分方式
2019/11/20 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
介绍一下MD5加密算法
2016/11/12 面试题
项目专员岗位职责
2013/12/04 职场文书
项目施工员岗位职责
2014/03/09 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
六年级学生期末评语
2014/12/26 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
运动会班级前导词
2015/07/20 职场文书