一.let与const块级作用域,const定义之后不可改变,变量提升。二.箭头函数箭头函数的特点:this是在定义时决定的,普通函数this是在调用时决定的。箭头函数不能用在构造函数,构造函数里this会指向新创建出来的对象,箭头函数里this指向是在定义时决定的。三.类四.模版字符串五.解构5.1 数组的解构5.2 对象的解构5.3 解构的原理:针对可迭代对象的Iterator接口,通过遍历器获取对应的值进行赋值5.4 Iterator接口,为各种不一样的数据解构提供统一的访问机制。任何数据解构只要有Iterator接口,就能通过遍历操作,依次按顺序处理数据结构内的所有成员。es6 for of相当于遍历器,在遍历数据结构时,自动寻找该接口六. 遍历6.1 for in缺点:会遍历原型链上的可枚举属性;适合遍历对象,不适合遍历数组6.2 for of可迭代对象(Array、Set、String、TypedArray,arguments对象,NodeList对象)上创建迭代循环,调用自定义迭代钩子。优点:仅遍历当前对象;可中断七. Object7.1 Object.keys返回一个给定对象的自身可枚举属性组成的数组7.2 Object.values返回一个给定对象可枚举属性值的数组7.3 Object.entries返回一个给定对象自身可枚举属性的键值对数组7.4 Object.getOwnPropertyNames返回自身拥有的枚举或不可枚举属性名称字符串数组7.5 Object.getOwnPropertyDescriptor属性描述符,是一个对象,包含以下内容: configurable: 若为false,则任何删除目标属性或修改属性特性(writable, configurable,enumerable)的行为将被视为无效,故一般设置为true; writable: 若为false,则修改该属性的操作都无效(不会报错,严格模式下会报错),默认false; enumerable: 是否能够在for-in或者Object.keys遍历出来7.6 Object.create()创建一个新的对象,将第一个参数作为新对象都protp属性的值。7.7 Object.assign浅拷贝,类似于{...a, ...b}八. 数组8.1 Array.flat()按照指定深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为新数组返回8.2 Array.includes判断数组是否含有指定值,含有返回true,否则返回false;含有两个参数8.3 Array.find返回数组中满足提供的测试函数的第一个元素值,否则返回undefined.8.4 Array.from创建一个新数组实例,数组的元素由可迭代对象的值组成8.5 Array.of创建一个具有可变数量参数的数组新实例,而不考虑参数的数量或类型九. 异步编程: async await yield十. Babel是一个工具链,将ES2015+版本的代码转换为向后兼容的js语法,以便能运行在当前和旧版本的浏览器中。抽象语法树(AST)处理过程中每一步都涉及到创建或操作抽象语法树。每一层都有相同的结构,这样的每一层结构被叫做节点,一个AST树有单一或多个节点构成,组合在一起可以描述用于静态分析的程序语法。Babel的处理步骤:解析parse, 转换transform, 生成generate。接收代码并输出AST,接收AST并对其遍历,对节点进行添加、更新及移除操作。这是最复杂的过程,需要插件介入,把最终的AST转化成字符串形式的代码,同时会创建源码映射(source maps)。补充知识点: Proxy将Object对象的某些明显属于语言内部的方法放到Reflect对象上。Reflect对象的方法与Proxy对象的方法一一对应,Proxy对象可以方便地调用对应的Reflect方法,完成默认行为,作为修改行为的基础。不管Proxy怎么修改默认行为,你总可以在Reflect上获取默认行为。