# 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方法 |