解决for循环内setInterval/setTimeout问题

错误示例:

for (var i = 0; i < 10; i++) {
    setInterval(function(){
        console.log(i);
    },interval);
}

setInterval是异步的,等到到达执行的时间的时候,里面的i已经变成3了。需要通过作用域来确保变量的值是想要的值

解决办法:

for (var i = 0; i < 10; i++) {
    (function(i1){
        setInterval(function(){
            console.log(i1);
        },interval);
    })(i);//执行传入i, 匿名函数function的形参是i1,实参就是传入的i
}

参考地址: https://segmentfault.com/q/1010000002932798

发布了127 篇原创文章 · 获赞 150 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/qq_40259641/article/details/103985697
今日推荐