采用自执行的匿名函数解决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 相关文章推荐
在b/s开发中经常用到的javaScript技术
Aug 23 Javascript
Js 本页面传值实现代码
May 17 Javascript
JQuery 绑定事件时传递参数的实现方法
Oct 13 Javascript
Jquery 表格合并的问题分享
Sep 17 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
做web开发 先学JavaScript
Dec 12 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
深入理解Node.js 事件循环和回调函数
Nov 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,while,foreach遍历时间比较的详解
2013/06/08 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
使用python绘制常用的图表
2016/08/27 Python
Django URL传递参数的方法总结
2016/08/28 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
使用python存储网页上的图片实例
2018/05/22 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python groupby 函数 as_index详解
2019/12/16 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python