采用自执行的匿名函数解决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 相关文章推荐
菜单效果
Oct 14 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
简单实现vue中的依赖收集与响应的方法
Feb 18 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
JavaScript setInterval()与setTimeout()计时器
Dec 27 Javascript
vuex的数据渲染与修改浅析
Nov 26 Vue.js
原生js实现自定义难度的扫雷游戏
Jan 22 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
php 变量定义方法
2009/06/14 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
许愿墙中用到的函数
2006/10/07 Javascript
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
python实现ftp客户端示例分享
2014/02/17 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python编程中类与类的关系详解
2019/08/08 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python 实现向word(docx)中输出
2020/02/13 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
django配置app中的静态文件步骤
2020/03/27 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
《赠汪伦》教学反思
2014/04/12 职场文书
理想演讲稿范文
2014/05/21 职场文书
2015暑假假期总结
2015/07/13 职场文书
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL