ES6总复习

image-20180907110717337

1. 变量声明

  • 新增letconstlet声明变量,const声明常量
  • letconst都不能重复声明
  • letconst都不存在变量提升
  • letconst都是块级作用域,而不是var的函数作用域
  • letconst会在区块中形成暂时性死区
  • 可以通过Object.freeze()来避免const声明的复合类型变量被修改

2. 解构赋值

  • 只要等号两边形式相同,就可以将右边的值赋予左边
  • 有遍历接口的数据类型都可以解构赋值,不能遍历的包括数字、布尔值、NaNundefinednull{}
  • 对象的解构赋值规则是变量和属性同名
  • 数组和对象的解构赋值都可以接受默认值,默认值生效的条件是对应变量的值严格等于undefined
  • 数值和布尔值解构赋值会先转为对象

3. 字符串

  • 增加了遍历器接口,可以用for...of来遍历
  • 模板字符串
    • 反引号标识
    • 可以转行
    • trim()可以去掉首尾的空格
    • 可以嵌入变量${}
  • includes()判断是否包含某个字符串元素
  • startsWith(), endsWith()判断是否以某个字符串元素开头或结尾
  • repeat(n)将原字符串重复n次
  • padStart(),padEnd()在字符串头部或尾部补齐参数字符串

4. 正则表达式

  • 新写法:new RegExp(/abc/, 'i')
  • u修饰符=> “Unicode模式”, unicode属性=>对应是否设置u修饰符
  • y修饰符=>粘粘修饰符,后一次匹配从上一次匹配成功的下一个位置开始,sticky属性对应是否设置y修饰符
  • flags属性,返回正则表达式的修饰符
  • 后行断言 => x只有在y后面才匹配 /(?<=y)x/;后行否定断言 /(?<!y)x/
  • 具名组匹配 /(?<year>\d{4})-(?<month>\d{2})/

5. 数组

  • 扩展运算符...
  • Array.from 将类似数组的对象和可遍历的对象转成真正的数组
  • Array.of() 将一组值转为数组
  • copyWithin() 将指定位置的成员赋值到其他位置
  • find() 找出第一个符合条件的数组成员, findIndex() 找到第一个符合条件成员的位置
  • fill()填充数组
  • includes() 是否包含某个值

6. 对象

  • 属性和值相同时,可以只写一个
  • name属性 返回对象名
  • Object.is(val1, val2) 判断两个值是否严格相等
  • Object.assign(target, source) 将源对象的所有可枚举属性赋给目标对象

7. 函数

  • 函数的参数可以指定默认值,默认值生效的前提是参数严格等于undefined
  • 默认值参数应放在参数末尾,且不会被计入length属性
  • rest参数 …变量名 用来获取函数的多余参数, 它是一个真正的数组
  • name属性返回函数名
  • 箭头函数 =>定义函数

8. Set和Map

  • Set类似数组,没有重复值
    • size属性,表示成员个数
    • 方法: add(value), delete(value), has(value), clear()
  • Map类似对象,键可以是任意数据类型
    • size属性
    • 方法: set(key, value), get(key), has(key), delete(key), clear()

9. Promise对象

  • Promise对象时用来解决异步的方法,有成功resolve和失败reject两种结果状态
  • 写法 new Promise(function(resolve, reject) {})判断成功和失败
  • Promise.prototype.then(fnSucc, fnFail)方法指定成功和失败后要使用哪个回调函数
  • Promise.all([p1, p2]) 一次性解析所有的promises
  • Promise.race 哪个快解析哪个

10. generator函数

  • Generator函数是一个状态机和遍历器对象生成器
  • 写法:
    • function和函数名直接有星号
    • 函数内部有yield
    • 使用next()方法调用
  • yield后面的值会作为它之前调用next()方法的值的value
  • next()方法可以有一个参数,作为上一个yield表达式的返回值

11. async函数

  • generator函数的语法糖
  • 写法: generator函数中的星号改成asyncyield改成await
  • 可以直接调用
  • 返回值是promise对象

12. Class

  • 专门用来创建类
  • 写法
    • class关键字定义类名
    • 内置constructor构造器
    • 类的方法写在class内部
  • 继承
    • class 子类 extends 父类
    • constructor内部super要继承的属性
  • 可以使用Object.assign()给类添加多个方法