ECMAScript日常总结--ES2021(ES12)

2023-12-19 06:25:52

ECMAScript日常总结–ES2021(ES12)

1. 数字分隔符

允许在数字字面量中使用下划线(_)进行分隔,提高数字的可读性。

const A = 1_000_000_000;
const B = 0b1010_0001_0010;
const C = 0xA0_B0_C0;


console.log(A) // 1000000000
console.log(B) //2578
console.log(C) //10531008

2. 逻辑或赋值(||=)

逻辑或赋值运算符 ||= 用于将一个变量赋值给另一个变量,但仅当左侧的变量为 falsy(假值)时才执行赋值操作。这有助于简化代码,特别是在需要检查并设置默认值的情况下。

// 语法:左侧变量 ||= 右侧表达式;
let x = 1;
x ||= 2;
console.log(x); // 输出 1,因为 x 不是 falsy

let y = 0;
y ||= 3;
console.log(y); // 输出 3,因为 y 是 falsy

逻辑或赋值运算符的使用场景之一是在设置默认值时:

function greet(name) {
  name ||= 'XXX';
  console.log(`Hello, ${name}!`);
}

greet('ABC'); // 输出 "Hello, ABC!"
greet();       // 输出 "Hello, XXX!",因为没有传递 name 参数,所以使用默认值 'XXX'

如果 name 参数为 falsy,就会使用逻辑或赋值运算符将默认值 'Guest' 赋给 name

逻辑或赋值运算符是一个短路运算符,即如果左侧的表达式是 truthy,右侧的表达式将不会被执行。这有助于避免不必要的计算。

3. String.prototype.replaceAll()

该方法允许通过替换所有匹配的子字符串来更新字符串。以前,String.replace()方法只替换第一个匹配项。

const originalString = "A B A D";
const newString = originalString.replaceAll("A", "E");
console.log(newString); // "E B E D"

4. Promise.any()

Promise.any()方法接收一个Promise数组,一旦数组中的任何一个Promise被解决(fulfilled),它就会返回该Promise的值。如果所有Promise都被拒绝(rejected),则返回一个聚合错误。

const promises = [
  fetch('https://api.example.com/data1'),
  fetch('https://api.example.com/data2'),
  fetch('https://api.example.com/data3')
];

Promise.any(promises)
  .then(result => console.log(result))
  .catch(error => console.log(error));

5. Promise.prototype.finally()

finally方法在Promise被解决(fulfilled)或拒绝(rejected)后执行指定的回调函数,无论Promise的状态如何。

fetch('https://api.example.com/data')
  .then(response => response.json())
  .finally(() => console.log('请求完成,无论成功或失败'));

文章来源:https://blog.csdn.net/Robinwang1128/article/details/135054832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。