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>
阅读 2.7k
2 个回答

你想表达什么?

也是和for循环里面的闭包一样吧,在外面包一层立即执行函数

function resort(){
    for (let i = 0; i < 10; i++) {
        for (let j = 0; j < 10 - i; j++) {
          (function(a,b){
            setTimeout(function(){
                console.log(a*10 + b);
            },(a*10+b)*500);
          })(i,j)
        };
    };
}
resort();

不知道是不是这意思

推荐问题