面试题(二)"/>
ES6常见面试题(二)
8、 setTimeout、Promise、Async/Await 的区别
事件循环中分为宏任务队列和微任务队列
其中setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行async函数表示函数里面可能会有异步方法,await后面跟一个表达式
async方法执行时,遇到await会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行
9、 promise有几种状态,什么时候会进入catch?
三个状态:
pending、fulfilled、reject
两个过程:
padding -> fulfilled、padding -> rejected当pending为rejectd时,会进入catch
10、下面的输出结果是多少
const promise = new Promise((resolve, reject) => {console.log(1);resolve();console.log(2);
})promise.then(() => {console.log(3);
})console.log(4);
11、使用结构赋值,实现两个变量的值的交换
let a = 1;let b = 2;
[a,b] = [b,a];
12、设计一个对象,键名的类型至少包含一个symbol类型,并且实现遍历所有key
let name = Symbol('name');let product = {[name]:"洗衣机", "price":799};Reflect.ownKeys(product);
13、下面Set结构,打印出的size值是多少
let s = newSet();
s.add([1]);s.add([1]);
console.log(s.size);
14、Promise 中reject 和 catch 处理上有什么区别
reject 是用来抛出异常,catch 是用来处理异常
reject 是 Promise 的方法,而 catch 是 Promise 实例的方法
reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch
网络异常(比如断网),会直接进入catch而不会进入then的第二个回调
更多推荐
ES6常见面试题(二)
发布评论