ES12的逻辑操作符 ,数字分隔符,字符串的replaceAll,FinalizationRegistry的用法以及使用场景

75 阅读2分钟

以下是 ES12 (ECMAScript 2021) 中一些重要特性的总结,包括逻辑操作符、数字分隔符、字符串的 replaceAllFinalizationRegistry 的用法及使用场景,使用 Markdown 格式呈现:


ES12 (ECMAScript 2021) 特性总结

1. 逻辑操作符 (&&=, ||=, ??=)

描述

ES12 引入了三个新的逻辑赋值操作符:

  • &&=:逻辑与赋值。
  • ||=:逻辑或赋值。
  • ??=:逻辑空值合并赋值。

这些操作符用于简化条件赋值操作。

语法

x &&= y; // 等价于 x = x && y;
x ||= y; // 等价于 x = x || y;
x ??= y; // 等价于 x = x ?? y;

示例

// 逻辑与赋值 (&&=)
let a = 1;
a &&= 2; // a = 1 && 2 → a = 2

// 逻辑或赋值 (||=)
let b = 0;
b ||= 2; // b = 0 || 2 → b = 2

// 逻辑空值合并赋值 (??=)
let c = null;
c ??= 3; // c = null ?? 3 → c = 3

使用场景

  • 简化条件赋值操作,使代码更简洁。

2. 数字分隔符 (_)

描述

数字分隔符 _ 允许在数字字面量中使用下划线来提高可读性。

语法

const number = 1_000_000;

示例

const billion = 1_000_000_000;
const pi = 3.141_592_653_589;

使用场景

  • 提高大数字或复杂数字的可读性。

3. 字符串的 replaceAll

描述

replaceAll 方法用于替换字符串中所有匹配的子字符串。

语法

str.replaceAll(searchValue, replaceValue);

示例

const str = "Hello, world! world!";
const newStr = str.replaceAll("world", "JavaScript");

console.log(newStr); // "Hello, JavaScript! JavaScript!"

使用场景

  • 需要替换字符串中所有匹配的子字符串时。

4. FinalizationRegistry

描述

FinalizationRegistry 提供了一种机制,用于在对象被垃圾回收时执行清理操作。

语法

const registry = new FinalizationRegistry(heldValue => {
  // 清理操作
});

registry.register(target, heldValue);

示例

const registry = new FinalizationRegistry(heldValue => {
  console.log(`Cleaning up: ${heldValue}`);
});

let obj = {};
registry.register(obj, "some value");

obj = null; // 当 obj 被垃圾回收时,会触发清理操作

使用场景

  • 需要在对象被垃圾回收时执行一些清理操作,如释放资源。

总结

特性描述使用场景
逻辑操作符 (&&=, `=, ??=`)简化条件赋值操作简化条件赋值操作,使代码更简洁
数字分隔符 (_)提高数字字面量的可读性提高大数字或复杂数字的可读性
字符串的 replaceAll替换字符串中所有匹配的子字符串需要替换字符串中所有匹配的子字符串时
FinalizationRegistry在对象被垃圾回收时执行清理操作需要在对象被垃圾回收时执行一些清理操作,如释放资源

希望这份总结对你有帮助!如果有其他问题,欢迎随时提问。