千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

ES6新增
1.var,let,const的区别?
(1).通过var定义的变量,会有一个变量声明提升,例如先打印a再定义a是可以的,但是let和const不会声明提前,所以这样操作会直接报错。并且被const定义的无法被修改。
2.解构赋值
结构分为对象或数组结构,一般用于从后端返回一个很大对象,但可能我们只想要其中的几个属性,这时就可以通过结构赋值取出来想要的属性
3.箭头函数
箭头函数中没有自己的this,箭头函数的this是指向外部的this,在箭头函数创建时就绑定好了我们可以通过一个例子来证实


4.Proxy
Proxy除了代理能力,非常简单的直接从底层支持对数组的监听和修改。比Object.defineProperty更加强大,这也是vue2升级到vue3劫持数据的底层改变
5.Promise
Promise衍生的问题
处理异步方案:
(1)回调函数
(2)promise:当resolve方法调用了就走then返回函数,如果调用了reject方法就会走catch回调
(3)generator生成器配合yield
(4)语法糖 async await (这个语法糖是在ES8中新增的)
promise解决回调地狱,利用链式调用,请求完第一个接口,是为第二个接口做准备的
async await:用同步写法解决异步,await等待异步结束,有失败时还可以用catch捕获失败
promise提供的类方法可以直接使用.all、.race、.any
.all:所有的以resolve都结束就执行.then,有一个reject就会执行catch
.race:两个参数有一个返回结果.race就结束,而快的那一个如果时resolve就执行.then,是reject就执行.catch
.any:跟.race很像但.any不会因为有一个变成rejected的状态就就结束,必须等到所有参数promise都变成rejected状态才结束
6.Generator函数 异步编程的解决方案,是一个状态机,封装了多个内部状态。
每次执行Generator函数 都会返回一个遍历器对象,这是一个同步的遍历器,可以通过,next获取内部每一个的状态。
当我们调用 generator.next()时,Generator函数会从当前暂停的位置开始执行,并返回一个包含 value 和 done 属性的对象.
value 表示 yield 表达式的返回值,而 done 表示是否已经选代完所有的 yield 语句。
7.class构造函数
构造函数中的成员有三个:构造器constructor、属性(实例方法静态方法)、方法(实例方法静态方法)
extents继承关键字直接可以继承原型上的方法在构造器中写上super()就继承了构造函数中的属性,实现了混合继承。