
- 新增
let
和const
,let
声明变量,const
声明常量
let
和const
都不能重复声明
let
和const
都不存在变量提升
let
和const
都是块级作用域,而不是var
的函数作用域
let
和const
会在区块中形成暂时性死区
- 可以通过
Object.freeze()
来避免const
声明的复合类型变量被修改
- 只要等号两边形式相同,就可以将右边的值赋予左边
- 有遍历接口的数据类型都可以解构赋值,不能遍历的包括数字、布尔值、
NaN
,undefined
,null
,{}
- 对象的解构赋值规则是变量和属性同名
- 数组和对象的解构赋值都可以接受默认值,默认值生效的条件是对应变量的值严格等于
undefined
- 数值和布尔值解构赋值会先转为对象
- 增加了遍历器接口,可以用
for...of
来遍历
- 模板字符串
- 反引号标识
- 可以转行
trim()
可以去掉首尾的空格
- 可以嵌入变量
${}
includes()
判断是否包含某个字符串元素
startsWith()
, endsWith()
判断是否以某个字符串元素开头或结尾
repeat(n)
将原字符串重复n次
padStart()
,padEnd()
在字符串头部或尾部补齐参数字符串
- 新写法:
new RegExp(/abc/, 'i')
u
修饰符=> “Unicode模式”, unicode
属性=>对应是否设置u
修饰符
y
修饰符=>粘粘修饰符,后一次匹配从上一次匹配成功的下一个位置开始,sticky
属性对应是否设置y
修饰符
flags
属性,返回正则表达式的修饰符
- 后行断言 =>
x
只有在y
后面才匹配 /(?<=y)x/
;后行否定断言 /(?<!y)x/
- 具名组匹配
/(?<year>\d{4})-(?<month>\d{2})/
- 扩展运算符
...
Array.from
将类似数组的对象和可遍历的对象转成真正的数组
Array.of()
将一组值转为数组
copyWithin()
将指定位置的成员赋值到其他位置
find()
找出第一个符合条件的数组成员, findIndex()
找到第一个符合条件成员的位置
fill()
填充数组
includes()
是否包含某个值
- 属性和值相同时,可以只写一个
name
属性 返回对象名
Object.is(val1, val2)
判断两个值是否严格相等
Object.assign(target, source)
将源对象的所有可枚举属性赋给目标对象
- 函数的参数可以指定默认值,默认值生效的前提是参数严格等于
undefined
- 默认值参数应放在参数末尾,且不会被计入
length
属性
- rest参数
…变量名
用来获取函数的多余参数, 它是一个真正的数组
name
属性返回函数名
- 箭头函数
=>
定义函数
Set
类似数组,没有重复值
- 有
size
属性,表示成员个数
- 方法:
add(value)
, delete(value)
, has(value)
, clear()
Map
类似对象,键可以是任意数据类型
- 有
size
属性
- 方法:
set(key, value)
, get(key)
, has(key)
, delete(key)
, clear()
Promise
对象时用来解决异步的方法,有成功resolve
和失败reject
两种结果状态
- 写法
new Promise(function(resolve, reject) {})
判断成功和失败
Promise.prototype.then(fnSucc, fnFail)
方法指定成功和失败后要使用哪个回调函数
Promise.all([p1, p2])
一次性解析所有的promises
Promise.race
哪个快解析哪个
- Generator函数是一个状态机和遍历器对象生成器
- 写法:
function
和函数名直接有星号
- 函数内部有
yield
- 使用
next()
方法调用
yield
后面的值会作为它之前调用next()
方法的值的value
值
next()
方法可以有一个参数,作为上一个yield
表达式的返回值
- generator函数的语法糖
- 写法: generator函数中的星号改成
async
,yield
改成await
- 可以直接调用
- 返回值是promise对象
- 专门用来创建类
- 写法
class
关键字定义类名
- 内置
constructor
构造器
- 类的方法写在
class
内部
- 继承
class 子类 extends 父类
constructor
内部super
要继承的属性
- 可以使用
Object.assign()
给类添加多个方法