JS函数执行的时机

85 阅读1分钟

1.执行时机

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

如上函数: 打印为6个6而不是0,1,2,3,4,5
原因是:首先会执行for循环后i的值为6,然后尽快打印6次,结果就是6个6.

2.如何打印出0,1,2,3,4,5

  setTimeout(()=>{
    console.log(i)
  },0)
}

原因:每次for循环会复制一个i。

3.第二种打印0,1,2,3,4,5

    (function(j) {  // j = i
        setTimeout(function() {
            console.log(j);
        }, 0);
    })(i);
}