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()兼容性最好
- 千万不能使用typeof来判断对象和数组,因为这两种类型都会返回"object"!!!