ECMAScript2021: 你需要关注的javascript新特性

244 阅读1分钟

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特性有哪些呢

支持一下博主