采用自执行的匿名函数解决for循环使用闭包的问题
作者:bea
这段代码输出的是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) {setTim
这段代码输出的是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的arguments对象应用示例
- avascript中的自执行匿名函数应用示例
- JavaScript function 的 length 属性使用介绍
- css与javascript跨浏览器兼容性总结
- 一个通过script自定义属性传递配置参数的方法
- 一个字符串反转函数可实现字符串倒序
- jquery实现类似淘宝星星评分功能有截图
- javascript使用数组的push方法完成快速排序
- 一款由jquery实现的整屏切换特效
- JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
- 用javascript关闭本窗口不弹出询问框的方法
- javascript trim函数在IE下不能用的解决方法
- javascript在IE下trim函数无法使用的解决方法
- 如何用JavaScript定义一个类
- jquery实现类似淘宝星星评分功能实例
- jquery根据锚点offset值实现动画切换
- 无限树Jquery插件zTree的常用功能特性总结
- js通过location.search来获取页面传来的参数
- Javascript中设置默认参数值示例