# ECMAScript新特性

JavaScript(ECMAScript)是跨多个平台的许多厂商实施的不断发展的标准。ES6(ECMAScript 2015)花费六年的时间敲定,是一个很大的发行版。新的年度发布流程被制定,以简化流程并更快地添加功能。 ES9(ES2018)是撰写本文时的最新版本。

# ECMAScript版本

从ECMAScript2016开始,ECMAScript将进入每年发布一次新标准的阶段。

ES1 ES2 ES3 ES4 ES5 ES5.1 ES2015(ES6) ES2016 ES2017 ES2018 ES2019 ...
1997 1998 1999 夭折 2009 2011 2015 2016 2017 2018 2019 ....

# ES2015 新特性

ES2015发布时间 2015.06

数据

类型 描述
let 声明块级作用域{}变量
const 声明常量
Symbol数据类型 Map Set数据类型

字符串扩展

类型 描述
模板字符串 字符串的for...of遍历
includes() 判断一个字符串是否包含在另一个字符串中
startsWith() 判断一个字符串是否包含在另一个字符串开头
endsWith() 判断一个字符串是否包含在另一个字符串末尾
repeat() 将字符串重复n次
matchAll() -

数值扩展

类型 描述
进制数前缀 二进制数值前缀0b(或0B)和八进制数值前缀0o(或0O)
Number.isFinite() 判断一个值是否是有限Infinity
Number.isNaN() 判断一个值是否是NaN
Number.isInteger() 判断一个值是否是整数
Number.isNaN() 判断一个值是否是NaN
Math.trunc() 删除一个数的小数部分
Math.sign() 判断一个数到底是正数、负数、还是零

函数扩展

类型 描述
函数参数默认值function(a=0,b=0){} ...rest参数接收函数参数
函数的name属性,获得该函数的函数名 箭头函数

数组扩展

类型 描述
... 扩展运算符
Array.from() 将符合格式的对象转化为数组
Array.of() 将符合格式的对象转化为数组
find() 找出第一个符合条件的数组成员
findIndex() 找出第一个符合条件的数组成员的下标
copyWithin() 指定位置的成员复制到其他位置
flat() 将多维数组变成一维的数组
数组的遍历:entries()键值对 keys()values()
fill() 使用给定值,填充一个数组

对象扩展

类型 描述
属性方法的简写 方法的name属性
属性名表达式,用字面量定义对象属性方法名 对象的解构赋值
class与类的继承extends Object.is()比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致
Object.assign()对象的合并 Object.is()比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致
Object.keys() Object.values() Object.entries()遍历对象的键、值、键值对 for...of对象遍历
Iterator遍历器

其他

类型 描述
Promise对象,用于异步编程 Generator函数
Es module ES6模块化

# ES2016 新特性

2016.06

运算符扩展

类型 描述
** 指数运算符

数组扩展

类型 描述
includes() 检查数组是否包含某元素

# ES2017 新特性

2017.06

字符串扩展

padStart()用某字符串在目标字符串开头补全到指定长度 padEnd()用某字符串在目标字符串末尾补全到指定长度

对象扩展

Object.values()对象的遍历,得到对象的可遍历的属性值组成的数组 Object.entries()对象的遍历,得到对象的可遍历的属性名与属性值组成的数组
Object.getOwnPropertyDescriptors()返回指定对象所有自身属性(非继承属性)的描述对象

函数扩展

函数实参和形参中的尾随逗号

异步编程

async await 异步函数

# ES2018 新特性

ES2018 是 ECMAScript 标准的最新版本,

对象扩展

对象的Rest扩展运算符 Promise.prototype.finally()Promise方法