1、let和var,const区别
let具有块局作用域,不会变量提升。
而var会变量提升,不具备块级作用域,只有函数和全局作用域。
2、箭头函数和普通函数的区别
箭头函数没有自己的this指向,它的this指向上下文this,不可以当作构造函数,也就是说new会抛出错误。
没有argument
3、Set,Map,WeakSet和WeakMap的区别
3.1 Set
集合,类似于数组成员都是唯一值。没有重复的值,主要方法有add,delete,has
3.2 weakSet
1、weakSet成员也是唯一的,但是成员是对象,而不是其它类型的值。
2、没有size属性,不能进行遍历。
3.3 Map
1、键值对,也就是hashmap,添加了get、set、has、delete方法,可以遍历。
3.4 weakMap
1、与map类似,只接收对象。
4、async await对比promise的优缺点
4.1 Promise
promise有三种状态,pending(执行中),sucess(成功),rejected(失败)
简单的说Promise就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作的结果)
promise.prototype.catch用于指定Promise的错误捕获。
4.2 async/await优点
能做到串行同步的优点,代码阅读更简单。
4.3 promise,async和await两者区别
promise链式调用,通过then进行返回
5、数组,对象等解构
let [a1,a2,a3,a4]=[1,0,8,6];
let {name,age}=[{name:"JackMaa",age:10086}];
6、class继承
1、class可以通过extends关键字实现继承
2、Object.getPrototype方法可以用来从子类上获取父类
3、super这个关键字,既可以当作函数使用,也可以当作对象使用。
4、子类的__proto__属性,表示构造函数继承,总是指向父类。
5、子类的prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype属性
Promise高频
Promise优缺点
缺点:
1、无法取消Promise,一旦新建就会立即执行,无法取消
2、如果不设置回调函数,promise内部抛出的错误就无法反应到外部
3、当处于pending状态时,无法得知目前进展到哪一个状态
优点:
1、解决回调地狱问题。
2、代码扁平可读,.then方法链式调用。
3、更好的进行错误捕捉。
Promise.then(),catch().finally?
promise.all:
同时处理多个promise对象,包装到一个新的promise实例中。