采用自执行的匿名函数解决for循环使用闭包的问题

网友投稿 212 2023-08-07


采用自执行的匿名函数解决for循环使用闭包的问题

这段代码输出的是10个10而不是期望的0到9,因为闭包内是对i的引用,然后函数执行时i已经变成了10

function f1(){

for(var i = 0; i < 10; i++) {

setTimeout(function() {

alert(i);

}, 1000);

}

}

f1();

TQEEy

解决以上的问题可以采用自执行的匿名函数

functionhttp:// f2(){

for(var i = 0; i < 10; i++) {

(function(e) {

setTimeout(function() {

alert(e);

}, 1000);

})(i);

}

}

f2();

这里的匿名函数将i作为参数,这里的e会有i的一个拷贝,而引用时是对e的引用,这就避免了上述的问题


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java使用JDBC连接数据库的实现方法
下一篇:sogou地图API用法实例教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~