es2015 - es2020

6
open
sqshada
sqshada
Posted 4 months ago

es2015 - es2020 #21

sqshada
sqshada
Created 4 months ago

ES6 常用

模块化

模块的功能主要由 export 和 import 组成。每一个模块都有自己单独的作用域,模块之间的相互调用关系是通过 export 来规定模块对外暴露的接口,通过import来引用其它模块提供的接口。

箭头函数

函数参数默认值

模板字符串

解构赋值

延展操作符

对象属性简写

Promise

Let与Const

sqshada
sqshada
Created 4 months ago

ES7新特性(2016)

Array.prototype.includes()

指数运算符

在ES7中引入了指数运算符**,**具有与Math.pow(..)等效的计算结果。

sqshada
sqshada
Created 4 months ago

ES8新特性(2017)

async/await

Object.values()

Object.entries()

函数返回一个给定对象自身可枚举属性的键值对的数组。

for(let [key,value] of Object.entries(obj1)){
	console.log(`key: ${key} value:${value}`)
}
//key:a value:1
//key:b value:2
//key:c value:3

String padding: padStart()和padEnd(),填充字符串达到当前长度

String.padStart(targetLength,[padString])
String.padEnd(targetLength,[padString])
  • targetLength:当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
  • padString:(可选) 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留填充字符串最左侧的部分,其他部分会被截断,此参数的缺省值为 " ";

函数参数列表结尾允许逗号

Object.getOwnPropertyDescriptors()

用来获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象。

ShareArrayBuffer和Atomics对象,用于从共享内存位置读取和写入

sqshada
sqshada
Created 4 months ago

ES9新特性(2018)

Promise.finally()

Rest/Spread 属性

Rest参数语法允许我们将一个不定数量的参数表示为一个数组。

restParam(1, 2, 3, 4, 5);

function restParam(p1, p2, ...p3) {
  // p1 = 1
  // p2 = 2
  // p3 = [3, 4, 5]
}

正则表达式命名捕获组(Regular Expression Named Capture Groups)

正则表达式反向断言(lookbehind)

正则表达式dotAll模式

正则表达式 Unicode 转义

非转义序列的模板字符串

sqshada
sqshada
Created 4 months ago

ES10新特性(2019)

新增了Array的flat()方法和flatMap()方法

var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组

// 只会将 flatMap 中的函数返回的数组 “压平” 一层
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]

新增了String的trimStart()方法和trimEnd()方法

Object.fromEntries()

Object.fromEntries() 函数传入一个键值对的列表,并返回一个带有这些键值对的新对象

const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }

Function.prototype.toString()现在返回精确字符,包括空格和注释

sqshada
sqshada
Created 4 months ago

ES2020

Promise.allSettled

并发任务中,无论一个任务正常或者异常,都会返回对应的的状态(fulfilled 或者 rejected)与结果(业务value 或者 拒因 reason),在 then 里面通过 filter 来过滤出想要的业务逻辑结果,这就能最大限度的保障业务当前状态的可访问性

可选链(Optional chaining)

var age = user?.info?.getAge?.();

空值合并运算符(Nullish coalescing Operator)

var level =  user.data.level || '暂无等级';

dynamic-import

按需引入

globalThis

globalThis 目的就是提供一种标准化方式访问全局对象,有了 globalThis 后,你可以在任意上下文,任意时刻都能获取到全局对象。

String.prototype.matchAll

方法返回一个包含所有匹配正则表达式及分组捕获结果的迭代器(可以更好的用于分组,代替 while + 正则)

const regexp = RegExp('foo*','g'); 
const str = 'table football, foosball';
let matches = str.matchAll(regexp);

for (const match of matches) {
  console.log(match);
}
// Array [ "foo" ]
// Array [ "foo" ]

新的基本数据类型 BigInt

加上BigInt一共有七种基本数据类型,分别是: String、Number、Boolean、Null、Undefined、Symbol、BigInt