ES6/ES7面试题,请查收

新特性

模块的导入(import)、导出(export);

let、const定义块级作用域;

箭头函数、class类、拓展运算符、模板字符串、函数参数默认值;

常见组数处理方法map、filter、find、some、sort、concat、splice等

新数组类型Set、Map、Symbol;

for...of,for...in;

promise处理异步操作。

 

let、const、var

三者都用来声明变量。

var会有变量提升,let、const则不会;

let、var的变量可修改,而const不可修改;

let、const声明的变量为块级作用域,var是函数作用域。

 

箭头函数

箭头函数没有自己的this,引用上下文的this,作为自己的this;

箭头函数没有原型(prototype),不能当作构造函数,也就不能使用new;

箭头函数由于处于全局作用域中,没有自己的arguments。

 

Set、Map

相同点:键的唯一性。

Set存储的键值对,由于键和值相同,因此值唯一,可用作数组去重;

Set用于检查某个值是否存在,实现并集、交集、差集等运算;

Map用于存储数据,查找数据;

Set常用方法有add、delete、has,Map常用方法set、get、delete、has。

 

Promise简述

Promise是用来包裹异步操作(如ajax请求)的容器。是异步编程的一种解决方案,是一个构造函数,自身方法有resolve、reject、all。实例对象上有then、catch等方法。

 

Promise原理

Promise返回的是一个Promise实例对象。实例对象有三种状态(pending-进行中,fulfilled-成功,rejected-失败),且不受外界影响。

resolve方法将状态从pending变成resolved。

reject方法将状态从pending变成rejected。

then方法接受两个回调函数做为参数,第一个在状态变resolved时调用,第二个在状态变rejected时调用,第二个可选。

catch方法与then的第二个参数一样,可捕获异常。

 

Promise.all

Promise.all()接受的是数组,数组由多个异步操作组成,提供了异步的并行能力,都执行完才会在then里返回结果,其中有一个失败,则会立即在catch里抛出异常。

 

async await

async await是Promise的语法糖。

async声明函数是异步,且函数会返回一个promise;

await必须在async内使用,函数执行遇到await会先执行,执行完毕才会执行后面的语句,如果失败,则会立即抛出,并终止执行。

 

class

class是语法糖,可作为对象模板被引入,可以实现封装与继承。

其包含构造函数constructor,在constructor中定义属性,在其外部定义方法。

注意:类定义不会被变量提升,必须在访问前定义,否则会报错。

 

for...of、for...in、forEach

for...of可遍历数组、对象,输出值(value);

for...in常用来遍历对象,输出键(key);

forEach用来遍历数组,可修改数组元素,不输出值。

 

Proxy

proxy可对目标对象的读取、函数调用等操作进行拦截,它不直接操作对象,而是起到代理模式。

捕获器里包含get、set、has、defineProperty等方法;

可实现数据绑定和监听(vue3就是基于proxy)。

posted @ 2020-04-27 13:28  一杯龙井解千愁  阅读(335)  评论(0)    收藏  举报