JS 函数的执行时机

为什么如下代码会打印 6 个 6

  1. let i = 0
  2. for(i = 0; i<6; i++){
  3. setTimeout(()=>{
  4. console.log(i)
  5. },0)
  6. }
  7. 因为执行完for循环,才执行setTimeout函数。
  8. 跳出for循环后,i=6

打印 0、1、2、3、4、5 的方法

方法1

  1. for(let i = 0; i<6; i++){
  2. setTimeout(()=>{
  3. console.log(i)
  4. },0)
  5. }
  6. JSforlet一起用加东西了,迎合新人思维
  7. 每次循环会多创建一个i

方法2

  1. let c=[0,1,2,3,4,5]
  2. function fn(){
  3. console.log(c[0]);
  4. console.log(c[1]);
  5. console.log(c[2]);
  6. console.log(c[3]);
  7. console.log(c[4]);
  8. console.log(c[5]);
  9. }
  10. fn()
  11. 输出:0 1 2 3 4 5

方法3

  1. for (var i = 0; i < 6; i++) {
  2. (function (a) {
  3. setTimeout(function () {
  4. console.log(a);
  5. }, 0);
  6. }(i));
  7. }