let与块级作用域
- 解决for循环计数器重名问题
- for存在两个作用域:外层作用域()、内层作用域{}
- 不存在变量声明的提升
const 常量/恒量
- 初始化时需注意赋值,声明后再赋值会报错
- 定义引用类型的,引用地址不能改,但是属性值可以更改
- 不用var,主用 const,配合let
数组的解构
- 提取数组中的值,const [,,baz] = arr
- 三点运算符,解构末尾出现。const [baz,…rest] = arr
- 可设置默认值
对象的解构
- 根据属性名
- 可设置提取后变量名称、设置默认值。
- const { log } = console
模板字符串
- 支持换行
- 通过插值表达式,能嵌入变量或语句
- 标签模板字符串
字符串的扩展方法
- includes()
- startswith()
- endswith()
函数参数默认值
剩余参数
- 只能出现在形参的最后一位
- 展开数组
箭头函数
- 简短易读
- this 和外面作用域指向相同
对象字面量增强
- bar:bar 等同于 bar
- max: function () {} 等同于 max(){}
- 计算属性名 [2+2]:45
对象扩展方法
- Object.assign
- 将多源对象中的属性复制到一个目标对象中
- 同名属性会覆盖
- 函数内修改应用型对象,可复制成新对象
- Object.is
Proxy
- Object.defineProperty
- 只能监听对象的读写
- new Proxy({},{ get(target ,property ){},set(target ,property,value){} })
- Proxy能监听到更多对象操作
- 更好的支持数组对象的监听
Reflect
- 统一对象操作API
- Reflect.get()
- 内部封装了一系列对对象的底层操作
- Reflect成员方法就是Proxy处理对象的默认实现(13个方法)
Promise
- 解决了传统异步编程中回调函数嵌套过深的问题
Class
- 实例方法 vs 静态方法 static
- 类的继承 extends
- 子类通过super调用父类的属性和方法
Set数据结构
集合
- add()、has(),delete(),clear()
- 数组去重
- Aarry.from ,…
Map数据结构
- 解决键类型的问题,任意对象都能作为键
- set(),get(),delete(),clear(),forEach
Symbol
- 可作为属性名
- 私有成员变量
- 唯一性Symbol.for(字符串)
- 内置Symbol常量
- Object.getOwnPropertySymbol()
for … of 循环
- break 能跳出循环
- 可遍历所有类型的对象(含迭代器)
- 可迭代接口 Iterable
迭代器模式
- 统一对外迭代接口
生成器函数
- *星号 yeild
- 应用场景
- 发号器
ES Modules
ES2016概述
- 2016年6月
- index.of 查找不了 NAN ,includes可以
- 指数运算符 2 ** 10,2的10次方