美文网首页大前端
bug_for循环中提取循环次数bug(用闭包解决 )

bug_for循环中提取循环次数bug(用闭包解决 )

作者: oldSix_Zhu | 来源:发表于2017-03-20 16:00 被阅读4次

<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures">学习网址推荐</a>

<script>
    for(var i = 0; i < 10; i++)
    {
        setTimeout(function () {
            console.log(i);
            //打印10次10
        },0);
    }
</script>

因为JavaScript函数的特点主任务代码先执行
即先把for循环的10次循环走完,再执行setTimeout,此时i为10了

解决代码:

<script>
    for(var i = 0; i < 10; i++)
    {
        function test1(j) {
            return function () {
                console.log(j);
            };
        }

        var test2 = test1(i);
        setTimeout(test2,0);
        //打印0到9
    }
</script>

相关文章

  • bug_for循环中提取循环次数bug(用闭包解决 )

    学习网址推荐 因为JavaScript函数的特点主任务代码先执行即先把for循环的10次循环走完,再执行setTi...

  • Swift入门二(对象函数)

    函数 闭包 GCD 尾随闭包 闭包循环引用解决(OC) 闭包循环引用解决(swift推荐) 面向对象 命名空间: ...

  • Day2

    1 单方向的引用不会产生循环引用。循环引用:闭包引用了self,self引用了闭包。Swift推荐使用解决循环引用...

  • swift闭包的循环引用

    类似于OC的block,swift闭包中也存在循环引用的问题,通常解决闭包中循环引用的方式有以下三种(1)方式一:...

  • Swift闭包注意事项

    解决闭包的循环强引用 在定义闭包时同时定义捕获列表作为闭包的一部分,通过这种方式可以解决闭包和类实例之间的循环强引...

  • swift中的内存管理

    基于引用计数的ARC内存管理 循环引用 使用[weak ***]解决循环饮用 逃逸闭包 闭包的调用逃离了函数的作用域

  • iOS闭包循环引用精讲

    iOS闭包循环引用精讲 iOS闭包循环引用精讲

  • 2018-07-30

    闭包中解决循环引用的三种方式方式一:weak var weakself = selftool.loadData {...

  • 闭包循环引用([unowned self] 与 [weak se

    使用闭包时,经常需要考虑循环应用的问题,在swift中,解决该问题比较简单,使用闭包捕获列表[unowned se...

  • JS第三天

    一、函数高级 1、函数回调 2、闭包 二、循环绑定 1、使用闭包解决局部变量生命周期 2、使用闭包解决变量污染问题...

网友评论

    本文标题:bug_for循环中提取循环次数bug(用闭包解决 )

    本文链接:https://www.haomeiwen.com/subject/xoqinttx.html