ES11中String的matchAll方法,BigInt, 对你高层对象globalThis标准的方式获取不同换将下的全局this ,空值合并运算符??

85 阅读3分钟

以下是 ES11(ECMAScript 2020)中一些重要特性的总结,包括 String.prototype.matchAllBigIntglobalThis、空值合并运算符 ??、可选链操作符 ?. 等内容,以 Markdown 格式呈现:


ES11 (ECMAScript 2020) 特性总结

1. String.prototype.matchAll

描述

matchAll 方法返回一个迭代器,该迭代器包含字符串中所有与正则表达式匹配的结果及其捕获组。

语法

str.matchAll(regexp);

示例

const regex = /t(e)(st(\d?))/g;
const str = 'test1test2';
const matches = [...str.matchAll(regex)];

console.log(matches[0]); // ['test1', 'e', 'st1', '1']
console.log(matches[1]); // ['test2', 'e', 'st2', '2']

使用场景

  • 需要提取字符串中所有匹配正则表达式的部分及其捕获组时。

2. BigInt

描述

BigInt 是一种新的数据类型,用于表示大于 2^53 - 1 的整数(即超过 JavaScript 中 Number 类型的最大安全整数)。

语法

const bigInt = BigInt(123456789012345678901234567890);
const bigIntLiteral = 123456789012345678901234567890n;

示例

const a = BigInt(Number.MAX_SAFE_INTEGER) + 1n;
console.log(a); // 9007199254740992n

注意事项

  • BigInt 不能与 Number 直接混合运算。
  • BigInt 不支持无符号右移运算符 >>>

使用场景

  • 处理大整数计算,如加密算法、大数运算等。

3. globalThis

描述

globalThis 提供了一种标准的方式来获取全局 this 对象,无论代码运行在浏览器、Node.js 还是其他环境中。

语法

globalThis;

示例

// 在浏览器中
console.log(globalThis === window); // true

// 在 Node.js 中
console.log(globalThis === global); // true

使用场景

  • 编写跨平台的 JavaScript 代码时,统一访问全局对象。

4. 空值合并运算符 ??

描述

空值合并运算符 ?? 用于判断左侧的值是否为 nullundefined,如果是,则返回右侧的值;否则返回左侧的值。

语法

leftExpr ?? rightExpr;

示例

const foo = null ?? 'default';
console.log(foo); // 'default'

const bar = 0 ?? 'default';
console.log(bar); // 0

|| 的区别

  • || 会对左侧的值进行布尔值判断,如果为假值(如 0''false 等),则返回右侧的值。
  • ?? 只对 nullundefined 进行判断。

使用场景

  • 需要区分 null/undefined 和其他假值时。

5. 可选链操作符 ?.

描述

可选链操作符 ?. 用于安全地访问嵌套对象的属性或方法。如果某个属性不存在,则返回 undefined,而不会抛出错误。

语法

obj?.prop;
obj?.[expr];
obj?.method();

示例

const user = {
  profile: {
    name: 'Alice',
    age: 25
  }
};

console.log(user?.profile?.name); // 'Alice'
console.log(user?.address?.city); // undefined

使用场景

  • 访问深层嵌套的对象属性时,避免因某个属性不存在而导致的错误。

总结

特性描述使用场景
String.prototype.matchAll返回所有正则匹配结果的迭代器提取字符串中所有匹配正则表达式的部分及其捕获组
BigInt表示大整数的数据类型处理大整数计算,如加密算法、大数运算等
globalThis提供标准方式获取全局 this 对象编写跨平台的 JavaScript 代码时,统一访问全局对象
空值合并运算符 ??判断左侧值是否为 nullundefined,是则返回右侧值需要区分 null/undefined 和其他假值时
可选链操作符 ?.安全地访问嵌套对象的属性或方法访问深层嵌套的对象属性时,避免因某个属性不存在而导致的错误