美文网首页大前端
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(用闭包解决 )

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