https://www.jianshu.com/p/184988903562一、如何精确的区分对象和数组
1.通过Array对象的isArray方法
var a=[]; var b={}; Array.isArray(a);//true Array.isArray(b);//false
2.通过原型对象
var a=[]; var b={}; console.log(a.constructor);//数组 console.log(b.constructor);//对象
二、面试题:js的事件循环
JS的任务分为同步任务和异步任务:任务队列分为同步任务队列和异步任务队列;
代码执行时,遇到同步代码,会被直接推入同步任务队列并依次执行;
遇到异步代码(如setTimeout、setInteval)会被直接推入异步任务队列;
JS的任务队列分为:三个队列:同步队列(也成为执行栈)、宏任务队列、微任务队列
1.宏任务(setTimeOut,setInterval)
2.微任务:Promise.then方法,process.nextTick
3.注意new Promise()的时候是同步的,会立即执行。
执行顺序,同步代码—> 微任务(要全部执行)—>宏任务(执行一个)—>微任务(全部执行)—>宏任务(执行一个)
参考:https://www.jianshu.com/p/e42f6e95a789