ES6总复习
1. 变量声明
- 新增
let
和const
,let
声明变量,const
声明常量 let
和const
都不能重复声明let
和const
都不存在变量提升let
和const
都是块级作用域,而不是var
的函数作用域let
和const
会在区块中形成暂时性死区- 可以通过
Object.freeze()
来避免const
声明的复合类型变量被修改
2. 解构赋值
- 只要等号两边形式相同,就可以将右边的值赋予左边
- 有遍历接口的数据类型都可以解构赋值,不能遍历的包括数字、布尔值、
NaN
,undefined
,null
,{}
- 对象的解构赋值规则是变量和属性同名
- 数组和对象的解构赋值都可以接受默认值,默认值生效的条件是对应变量的值严格等于
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])
一次性解析所有的promisesPromise.race
哪个快解析哪个
10. generator函数
- Generator函数是一个状态机和遍历器对象生成器
- 写法:
function
和函数名直接有星号- 函数内部有
yield
- 使用
next()
方法调用
yield
后面的值会作为它之前调用next()
方法的值的value
值next()
方法可以有一个参数,作为上一个yield
表达式的返回值
11. async函数
- generator函数的语法糖
- 写法: generator函数中的星号改成
async
,yield
改成await
- 可以直接调用
- 返回值是promise对象
12. Class
- 专门用来创建类
- 写法
class
关键字定义类名- 内置
constructor
构造器 - 类的方法写在
class
内部
- 继承
class 子类 extends 父类
constructor
内部super
要继承的属性
- 可以使用
Object.assign()
给类添加多个方法