ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13新特性大全
本文是对 ES6 至 ES13 常用到的特性的总结,关于每个特性的详细内容,都有单独的文章进行详细讲述,可以跳转到具体文章进行学习查看。学习永无止境大家一起努力 。
文章为从新到旧的顺序。
ECMAScript 2022(ES13)提案阶段,更倾向于面向对象
- 声明类的字段:类字段可以在类的顶层被定义和初始化
- 私有方法&字段:用
#前缀
来定义类的私有方法和字段 - 类的静态公共方法和字段:增加了
静态公共字段
、静态私有方法
和静态私有字段
的特性 - ECMScript 类静态初始化块:在类声明/定义期间评估静态初始化代码块,可以访问类的私有字段
- 检测私有字段:可以使用in操作符,如果指定的属性/字段在指定的对象/类中,则返回真,并且也能判断私有字段
- 正则匹配索引:该提案提供了一个新的
/d
flag,以获得关于输入字符串中每个匹配的开始和索引位置结束的额外信息 - 在所有内置的可索引数据上新增.at()方法
- Object.hasOwn(object, property):使用 Object.hasOwn 替代 Object.prototype.hasOwnProperty.call
- Error Cause:为了便捷的传递导致错误的原因
快来看看ECMAScript 2022(ES13)有哪些新标准?
ECMAScript 2021 (ES12)
- String.prototype.replaceAll :有了这个 API,替换字符不用写正则了
- Promise.any() :返回第一个 fullfilled 的 promise ,若全部 reject,则返回一个带有失败原因的 AggregateError。
- 新增逻辑赋值操作符: ??=、&&=、 ||=
- WeakRefs:使用弱引用对象,该弱引用不会阻止 GC,并且可以在 GC 前使用 WeakRef.prototype.deref ( ) 解除该引用。
- 下划线 (_) 分隔符:使用 _ 分隔数字字面量以方便阅读
- Intl.ListFormat :用来处理和多语言相关的对象格式化操作
- Intl.DateTimeFormat API 中的 dateStyle 和 timeStyle 的配置项:用来处理多语言下的时间日期格式化的函数
ECMAScript 2021 (ES12)的新特性总结
ECMAScript 2020(ES11)
- 动态 import ():按需导入
- 空值合并运算符:表达式在 ?? 的左侧 运算符求值为undefined或null,返回其右侧
- 可选链接:?.用户检测不确定的中间节点
- BigInt:新基本数据类型,表示任意精度的整数
- globalThis:浏览器:window、worker:self、node:global
- Promise.allSettled:返回一个在所有给定的promise已被决议或被拒绝后决议的promise,并带有一个对象数组,每个对象表示对应的promise结果
for-in
结构:用于规范for-in
语句的遍历顺序
ECMAScript 2020(ES11) 的新特性总结
ECMAScript 2019(ES10)
- Array.flat()和Array.flatMap():数组展平
- String.trimStart()和String.trimEnd():去掉开头结尾空格文本
- String.prototype.matchAll:为所有匹配的匹配对象返回一个迭代器
- Symbol.prototype.description:只读属性,回 Symbol 对象的可选描述的字符串
- Object.fromEntries():返回一个给定对象自身可枚举属性的键值对数组
- 可选 Catch
- JSON Superset 超集
- JSON.stringify() 加强格式转化
- Array.prototype.sort() 更加稳定
- Function.prototype.toString() 重新修订
ECMAScript 2019(ES10) 的新特性总结
ECMAScript 2018(ES9)
- 异步迭代:await可以和for...of循环一起使用,以串行的方式运行异步操作
- Promise.finally():逻辑只可以放在一个地方,这有点像以前
jQuery ajax
的complete
- Rest/Spread 属性:允许我们将一个剩余参数表示为一个数组
- 正则表达式命名捕获组:允许命名捕获组使用符号
?<name>
- 正则表达式反向断言(lookbehind)
- 正则表达式dotAll模式:正则表达式中点.匹配除回车外的任何单字符,标记s改变这种行为,允许行终止符的出现
- 正则表达式 Unicode 转义: Unicode 属性转义形式为
\p{...}
和\P{...}
ECMAScript 2018(ES9) 的新特性总结
ECMAScript 2017(ES8)
- async/await: 异步终极解决方案
- Object.values()
- Object.entries()
- String padding:String.prototype.padStart、String.prototype.padEnd
- 函数参数列表结尾允许逗号
- Object.getOwnPropertyDescriptors(): 获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象
- SharedArrayBuffer 对象:用来表示一个通用的,固定长度的原始二进制数据缓冲区
- Atomics 对象:提供了一组静态方法用来对 SharedArrayBuffer 对象进行原子操作
ECMAScript 2017(ES8) 的新特性总结
ECMAScript 2016(ES7)
- Array.prototype.includes()
- 指数操作符 **
ECMAScript 2016(ES7) 的新特性总结
ECMAScript 2015(ES6)
- let和const
- 类(class)
- 模块化(ES Module)
- 箭头(Arrow)函数
- 函数参数默认值
- 模板字符串
- 解构赋值
- 延展操作符 ...
- 对象属性简写
- Promise