面试题整理-4

43 阅读1分钟

async/await、promise和setTimeout的执行顺序

EventLoop 事件循环机制:(js事件分为宏任务和微任务)

  • 宏任务:setTimeout setInterval
  • 微任务:Promise.then Promise.nextTick
  • 先宏任务再微任务,任务又分为同步任务和异步任务,同步任务进入主线程,异步任务进入Event Table并注册函数,异步事件完成后,会将回调函数放在队列中,如果还有异步的宏任务,则继续执行以上循环操作。 setTimeout(()=>{ console.log('延时一秒') },1000) console.log('开始') new Promise是同步任务,发现.then加入微任务的Event Queue中

如何判断一个变量是对象还是数组?

prototype.toString.call()兼容性最好 image.png

  • 千万不能使用typeof来判断对象和数组,因为这两种类型都会返回"object"!!!