https://es6.ruanyifeng.com/
https://www.jianshu.com/p/99c15f9bff27
简单理解,具体看链接
1、let const
声明变量,块级作用域,let在for外会失效。const声明的变量保存的地址不能被修改,但地址指向的值可以修改;
2、解构赋值
可以把变量用[]或{}括起来赋值,按照相应的位置对变量赋值;解构失败变量=undefined;允许使用默认赋值;
3、字符串增强
模板字符串,使用代替'';可以在
中使用变量(js语句)和换行;
例: let str = 生成一个随机数:${ Math.random() }
;
4、字符串扩展方法:include、startWith、endsWith
5、函数扩展,传参可以使用默认值
6、Symbol数据类型,独一无二。
七种数据类型:undefined、null、boolean、string、number、object、symbol
7、Set和Map,Set类似数组,但成员是唯一的,小技巧用于数组去重,但{}和{}不灵;
Map,可以使用任何数据类型作为对象的key;之前object的key只能是string
8、Proxy:代理、拦截器,可以修改默认操作的行为。用法:var proxy = new Proxy(target, handler);target表示拦截对象,handler表示拦截操作的对象,包括get、set、has、consruct等13种;与Object.definedproperty类似但definedProperty只能改写set、get。vue3开始使用proxy实现双向数据绑定。
9、reflect:封装了操作object的方法,完全支持proxy,proxy有的reflect都有;例: Reflect.has(Object, ‘a’);
10、Promise,承诺;异步的解决方案,有reslove、reject、pending三种状态;详见其他链接;
11、Interator,遍历器,为可遍历的‘集合‘提供一种接口,主要为for of服务;
12、for of;一个数据结构只要部署了Symbol.iterator属性就可以使用for of循环遍历;
13、generator函数,和内部的yield 和函数上的.next()配合,可以一步一步的执行函数,返回一个对象 value 和 done;next中可以传值,作为执行下一步的参数,如果不传默认使用上一步的value;还可以.throw和.return
14、async是Generator的语法糖,换成async,yield换成await
15、class,类,更接近传统面向对象语言的写法。类似构造函数,生成实例,继承原型链等,默认包含一个constructor属性表示构造器;可以使用extents继承;面向对象封装、多态、继承;
16、Module;模块化,可以取代服务端的CommonJS和浏览器端的AWD;使用export导出,使用import引入;
与CommonJS的区别,CommonJS用在node上,导出使用module.export 引入使用require,不在package中写明type的话.cjs表示Com~;.mjs表示es6的module用法;