- JS函数的执行时机也称调用时机,是函数的九大要素之一,时机不同,结果不同
- 分析如下两段代码
- 上述两段代码区别在于,let在for外和内,打印出的结果不同,setTimeout()过一段时间后执行,尽快但不是现在
- i已经执行完成到6了,setTimeout才开始执行,要执行6次,故打印出6个6
- 当将let放入for里时,JS每次都会“复制”下j,所以setTimeout时,有6个j,分别为0,1,2,3,4,5,执行6次,即打印出0,1,2,3,4,5
- 总的来说,执行时要想清楚顺序
- 还可以使其变成立即执行函数,能打印出0,1,2,3,4,5
let k=0
for(k=0;k<6;k++){
! function(k){
setTimeout(()=>{
console.log(k)
},0)
}(k)
}