ES12 新增功能

FinalizationRegistry 对象销毁监听

当对象在内存中被销毁回收时,执行函数。

// ES12: FinalizationRegistry类
cost finalRegistry = new FinalizationRegistry((value) => {
  // 打印两次
  console.log("注册在finalRegistry的对象,某一个被销毀", value)
})
let obj = { name: "tom"}
let info = { age: 18 }
// 对象注册,参数2是取一个名字,在回调中辨别哪个对象被回收
finalRegistry.register(obj, 'obj')
finalRegistry.register(info, 'info')
obj = null
info = null

WeakRef 变量弱引用

方法:

  1. deref:获取被引用的值
let obj = { name: 'tom' }
let info = new WeakRef(obj)
// 此时 obj 指向的内存被回收,info值变为 undefined
obj = null

logical assignment operators 逻辑赋值运算

新运算符:

  1. ||=:逻辑或赋值运算符
  2. &&=:逻辑与赋值运算符
  3. ??=:逻辑空赋值运算符
// 1. ||=
let msg = undefined
// ES12之前
msg = msg || 'default value'
// ES12之后,与 += 类似
msg ||= 'default value'

// 2. &&=  应用场景少
let info = {
  name: 'tom'
}
// 等于 info = info && info.name
info && = info.name

// 3. ??=,||?、??=和||、??的区别相似
let msg = ''
msg ??= 'default value'

Numeric Separator 大数字分隔符

大数字看起来难以识别具体多大,使用 _ 分割,一目了然。

const num = 999_999_999_999
// 打印 999999999999
console.log(num)

String.replaceAll 字符串替换

replace 方法类似,自行演练下即可。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注