js setTimeout在双重for循环中如何使用?

日志中不打印的数字一样要占用时间,为什么,如何解决?

<script>

function resort(){

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

        for (let j = 0; j < 10 - i; j++) {

            setTimeout(function(){

                console.log(i*10 + j);

            },(i*10+j)*500);

        };

    };

}

resort();

</script>


PIPIONE
浏览 772回答 1
1回答

元芳怎么了

也是和for循环里面的闭包一样吧,在外面包一层立即执行函数function resort(){&nbsp; &nbsp; for (let i = 0; i < 10; i++) {&nbsp; &nbsp; &nbsp; &nbsp; for (let j = 0; j < 10 - i; j++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (function(a,b){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setTimeout(function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(a*10 + b);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },(a*10+b)*500);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })(i,j)&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; };}resort();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript