
Camila Waz
发布于
2020-09-01 15:15:09
ES6常见面试题总结(三)
上一篇文章:
ES6常见面试题总结(二)
下一篇文章:
ES6常见面试题总结(四)
11、使用结构赋值,实现两个变量的值的交换
两个数组[1]并不是同一个值,它们分别定义的数组,在内存中分别对应着不同的存储地址,因此并不是相同的值都能存储到Set结构中,所以size为2
14、Promise 中reject 和 catch 处理上有什么区别
reject 是用来抛出异常,catch 是用来处理异常
reject 是 Promise 的方法,而 catch 是 Promise 实例的方法
reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch
网络异常(比如断网),会直接进入catch而不会进入then的第二个回调
15、使用class 手写一个promise
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);答案:2
两个数组[1]并不是同一个值,它们分别定义的数组,在内存中分别对应着不同的存储地址,因此并不是相同的值都能存储到Set结构中,所以size为2
14、Promise 中reject 和 catch 处理上有什么区别
reject 是用来抛出异常,catch 是用来处理异常
reject 是 Promise 的方法,而 catch 是 Promise 实例的方法
reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch
网络异常(比如断网),会直接进入catch而不会进入then的第二个回调
15、使用class 手写一个promise
//创建一个Promise的类 class Promise{ constructor(executer){//构造函数constructor里面是个执行器 this.status = 'pending';//默认的状态 pending this.value = undefined//成功的值默认undefined this.reason = undefined//失败的值默认undefined //状态只有在pending时候才能改变 let resolveFn = value =>{ //判断只有等待时才能resolve成功 if(this.status == pending){ this.status = 'resolve'; this.value = value; } } //判断只有等待时才能reject失败 let rejectFn = reason =>{ if(this.status == pending){ this.status = 'reject'; this.reason = reason; } } try{ //把resolve和reject两个函数传给执行器executer executer(resolve,reject); }catch(e){ reject(e);//失败的话进catch } } then(onFufilled,onReject){ //如果状态成功调用onFufilled if(this.status = 'resolve'){ onFufilled(this.value); } //如果状态失败调用onReject if(this.status = 'reject'){ onReject(this.reason); } } }
最后生成于 2020-12-28 15:07:57
上一篇文章:
ES6常见面试题总结(二)
下一篇文章: