当前位置: 首页 > news >正文

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

以下是 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在对象被垃圾回收时执行清理操作需要在对象被垃圾回收时执行一些清理操作,如释放资源

相关文章:

  • transfmer学习认识
  • 【iOS】Blocks
  • Mysql-------事务
  • PWM(脉宽调制)技术详解:从基础到应用实践示例
  • 动态规划之背包问题
  • 正式页面开发-登录注册页面
  • 阿里云k8s服务部署操作一指禅
  • ECharts极简入门
  • 基于STM32设计的自动追光系统(系统资料)
  • 基于Chatbox AI部署Deepseek等模型
  • 环境变量1
  • 在项目中调用本地Deepseek(接入本地Deepseek)
  • 基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)
  • Django项目之订单管理part1
  • VS Code 如何搭建C/C++开发环境
  • Aseprite绘画流程案例(1)——画相机图标
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_test_full_name
  • 如何使用Spark SQL进行复杂的数据查询和分析
  • 一些耳朵起茧子的名词解释
  • 快速查询区间overlap的C/C++库:cgranges
  • 新能源汽车,告别混乱创新
  • 观察|“双雄”格局下电池制造商如何生存:加码不同技术、抢滩新赛道
  • 习近平同巴西总统卢拉会谈
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 男子退机票被收90%的手续费,律师:虽然合规,但显失公平