乐趣区

关于javascript:JS函数的执行时机

案例一

for(var i = 0; i<6; i++){setTimeout(()=>{console.log(i)
    },0)
}
  • 以上代码会打印出 6 个 6,原理是:setTimeout 会等到以后代码的 for 循环执行完了,再去执行 console.log(i)
  • 而 for 循环执行完之后,i 曾经是 6 了
  • 所以会打印出 6 个 6

案例二
如果心愿在 for 循环应用 settimeout 时,可能顺次打印出 0,1,2,3,4,5
用 Let就能够了,let 会独自创立一个作用域 相当于有 6 个 i

for(let i = 0; i<6; i++){setTimeout(()=>{console.log(i)
    },0)
}
退出移动版