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 变量弱引用
方法:
- deref:获取被引用的值
let obj = { name: 'tom' }
let info = new WeakRef(obj)
// 此时 obj 指向的内存被回收,info值变为 undefined
obj = null
logical assignment operators 逻辑赋值运算
新运算符:
||=
:逻辑或赋值运算符&&=
:逻辑与赋值运算符??=
:逻辑空赋值运算符
// 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
方法类似,自行演练下即可。