es6-es2015
class
类
1 | class Person { |
Module
模块化
1 | //test.js |
- 箭头函数
1 | setTimeout(a => console.log(a), 2000, 'test') |
- 函数参数默认值
1 | function foo(a = 10){ |
- 模板字符串
1 | const name='test'; |
- 解构赋值
1 | const [a, b, c] = ['a1', 'a2', 'a3']; |
- 延展操作符
1 | const arr = ['a1', 'a2', 'a3']; |
- 对象属性简写
1 | const name = 'test'; |
- Promise
1 | const p = new Promise(function(resolve, reject){ |
let
与const
1 | { |
es7-es2016
Array.prototype.includes
1 | console.log(['abc','bbb','ccc'].includes('bbb')) |
Exponentiation Operator
(求幂运算)
1 | console.log((5**3) === Math.pow(5, 3)) |
es8-es2017
Object.values/Object.entries
1 | let obj={a: 'a1', b: 'a2', c: 'a3' }; |
String padding
(字符串填充)
1 | console.log('0.00'.padStart(15)); |
Object.getOwnPropertyDescriptors
1 | let obj={a: 'a1', b: 'a2', c: 'a3' }; |
Trailing commas
(函数参数列表和调用中的尾逗号)
1 | function func(a,b,c,){} |
async/await
(异步函数)
1 | async function req() { |
SharedArrayBuffer/Atomics
从共享内存位置读取和写入
1 | const buffer = new SharedArrayBuffer(16); |
es9-es2018
- 异步迭代
1 | async function process(array) { |
- Promise.finally()
1 | function doSomething() { |
- Rest/Spread 属性
1 | restParam(1, 2, 3, 4, 5); |
- 正则表达式命名捕获组(Regular Expression Named Capture Groups)
1 | const |
- 正则表达式反向断言(lookbehind)
1 | const |
- 正则表达式dotAll模式
1 | /hello.world/.test('hello\nworld'); // false |
- 正则表达式 Unicode 转义
1 | const reGreekSymbol = /\p{Script=Greek}/u; |
- 非转义序列的模板字符串
1 | let str = String.raw`Hi\n\5\xxx\uuu\111`; |
es10-es2019
行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与JSON匹配
以前,这些符号在字符串文字中被视为行终止符,因此使用它们会导致SyntaxError异常。
更加友好的 JSON.stringify
如果输入 Unicode 格式但是超出范围的字符,在原先JSON.stringify返回格式错误的Unicode字符串。现在实现了一个改变JSON.stringify的第3阶段提案,因此它为其输出转义序列,使其成为有效Unicode(并以UTF-8表示)
新增了Array的flat()方法和flatMap()方法
flat()和flatMap()本质上就是是归纳(reduce) 与 合并(concat)的操作。
1 | let arr = [1, 2, [3, 4]]; |
新增了String的trimStart()方法和trimEnd()方法
Object.fromEntries()
1 | const map = new Map([ ['foo', 'bar'], ['baz', 42] ]); |
- Symbol.prototype.description
1 | const sym = Symbol('The description'); |
- String.prototype.matchAll
1 | const regexp = RegExp('foo*','g'); |
- Function.prototype.toString()现在返回精确字符,包括空格和注释
1 | function /* comment */ foo /* another comment */() {} |
- 简化try {} catch {},修改 catch 绑定
1 | try {} catch {} |
- 新的基本数据类型BigInt
1 | String、Number、Boolean、Null、Undefined、Symbol、BigInt |
- globalThis
- import()
- Legacy RegEx
- 私有的实例方法和访问器