ECMAScript 2022即将到来,但是去年推出了很多令人兴奋的新特性:
repalceAll 方法
const message = "A-message-being-divided";
const processedMessage = message.replaceAll('-', ' ');
//最终processedMessage的值是A message being divided
用repalceAll(),你可以替换字符串中指定的字符或者一组字符。它接受两个参数-第一个值是需要替换的字符串,第二个值是要替换它的值
Prmoise.any()
var p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({name: 2000})
}, 2000)
})
var p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ name: 3000 })
}, 3000)
})
Promise.any([p1, p2]).then(res => {
console.log(res)
})
// 最终输出{name: 2000}
用Prmoise.any(), 你可以在prmoise数组中拿到最早resolve出来的promire对象,如果都没有,就rejecty一个AggregateError错误
逻辑赋值操作符
能够把代码变得更加简洁。其中有逻辑或赋值||=, 逻辑与赋值&&=和零合并赋值操作符??=
如果x为真值,则将y赋值给x,否则返回x
let x = 1;
const y = 100
console.log(x&&=y) // 输出100
如何x为真值,返回x,否则将y赋值给x
let x = NaN
const y = 100
console.log(x||=y) // 输出100
如果x.z没有值,把y赋值给x.z
let x = {}
let y = 100
console.log(x.z ??= y) // 输出{z: 100}
数字分隔符
允许你添加下划线分割数字,使得数字可读性更高
let n1 = 1_000_000_000
console.log(n1) // 输出:1000000000
弱引用
弱引用WeakRef,允许创建对象的弱引用。这个引用不会阻止对象被垃圾回收器回收。
总结
总能学到新的方法来增强我们的开发。你最喜欢的、最常使用的JavaScript特性有哪些呢