JS函数执行的时机

123 阅读1分钟
  1. 什么是定时器?
  • setTimeout:一种定时器,可以在指定的毫秒数后调用函数或计算表达式
  • return timeoutID=setTimeout(function,delayTime,arg1,arg2,...)
    • function:delayTime(ms)到期后执行的函数
    • delayTime:1s=1000ms,deLayTime=0:尽快执行:等当前函数执行结束后执行。
    • argN:定时器到期,会作为参数传给function
    • timeoutID:定时器的编号,一个正整数,可以clearTimeout()消除定时器时候使用的值
  1. 下列函数i打印出什么?
let i =0;
for(i=0;i<6;i++) {
  setTimeout(()=>{
      console.log(i);
  },0);
}
  • 结果:6个6
  • 原因: &i=0x0000????,i申请了一个地址,传入for循环中,等for循环结束后i自增为6,这时候setTimeout执行,每一次for循环,setTimeout复制一次,等循环结束,有6个定时器,逐次打印当前i
  1. 让上述代码打出0,1,2,3,4,5
for(let i=0;i<6;i++) {
  setTimeout(()=>{
      console.log(i);
  },0);
}
  • 结果:0,1,2,3,4,5
  • 原因:不明
  1. 其他打印出0,1,2,3,4,5的方法
let i=0;
for(i=0;i<6;i++) {
	let num=i;
  setTimeout(()=>{
      console.log(num);
  },0,num);
}