JavaScript ES2021の新機能を知っていますか?

ECMAScript 2021には、他の言語を使用する場合に馴染みのある、興味深く強力な機能がいくつか導入されています。

1.すべて交換

replaceAll()は、正規表現を使用せずに文字列で指定されたすべての文字を置き換えることができます。これには、初期文字列と置換される文字列の2つのパラメーターがあります。

ケースは次のとおりです。

let str = ‘JavaScript’;
console.log(myStr.replaceAll(“a”, “v”)); //output: JvvvScript
复制代码

2.数値セパレーター

数字の区切り文字は、ES2021で導入された便利な機能の1つです。アンダースコア_を使用して数値を区切ることにより、JavaScriptで大きな数値を読みやすくします。

ケースは次のとおりです。

let num = 1_000_000;
console.log(num); //output: 1000000
复制代码

長い数字を読みやすくしました。

3.Promise Any

Promise.any()は、引数としてPromisesの配列を取ります。すべてのPromiseが解決されたら、最初に解決されたPromise.any()を返します。すべてのPromiseが拒否された場合、エラーを返します。

ケースは次のとおりです。

const promise1 = new Promise((resolve, reject) => {
 resolve(‘promise1 was resolved.’);
});
const promise2 = new Promise((resolve, reject) => {
 resolve(‘promise2 was resolved.’);
});
const promise3 = new Promise((resolve, reject) => {
 resolve(‘promise3 was resolved.’);
});

let result = Promise.any([promise1, promise2, promise3]);
console.log(result); //output: promise1 was resolved.
复制代码

上記の場合、Promise.any()はpromise1を返します。これは、これが最初に解決されるためです。すべてのPromiseが拒否された場合、拒否の理由とともにAggregateErrorが返されます。

4.弱参照

WeakRef()は、別のオブジェクトへの弱参照を保持するために使用されます。これは、ガベージコレクターがオブジェクトを収集することを妨げないことを意味します。オブジェクトを永久にメモリに保持したくない場合に便利です。

新しいWeakRefを作成し、引数としてオブジェクトをWeakRef()に渡してから、弱参照でderef()を呼び出して参照を読み取ります。

ケースは次のとおりです。

const object = new WeakRef({
name: ‘John’,
age: 25
});

//取object
console.log(object.deref()); //output: {name: “John”, age: 25}

//取name.
console.log(object.deref().name); //output: John
复制代码

5.論理代入演算子

ES2021には、&& =、|| =、および??=の3つの便利な論理代入演算子が導入されています。

論理代入演算子&&=は、2つの値の間で使用されます。最初の値がtrueの場合、2番目の値が割り当てられます。

ケースは次のとおりです。

let firstNumber = 5;
let secondNumber = 20;

firstNumber &&= secondNumber; //output: 20

console.log(firstNumber); //output: 20 

//上述代码等价于
if(firstNumber){
 firstNumber = secondNumber;
} 
复制代码

論理代入演算子||=は、2つの値の間でも使用されます。最初の値がtrue(false)でない場合は、2番目の値を割り当てます。

ケースは次のとおりです。

let firstNumber = null;
let secondNumber = 10;

firstNumber ||= secondNumber; //output: 10

console.log(firstNumber); //output: 10

//上述代码等价于
if(!firstNumber){
firstNumber = secondNumber;
}
复制代码

論理代入演算子??=は、最初の値が空であるか未定義であるかをチェックします。そうである場合は、2番目の値を割り当てます。

ケースは次のとおりです。

//当第一个值为 null 或为 undefined 时
let firstNumber = null;
let secondNumber = 10;

firstNumber ??= secondNumber; //output: 10

console.log(firstNumber); //output: 10 

//当第一个值为true时
firstNumber = 9;
firstNumber ??= secondNumber; //output: 9
console.log(firstNumber); //output: 9

//上述代码等价于
if(firstNumber == null || firstNumber == undefined){
 firstNumber = secondNumber;
} 
复制代码

这些运算符使赋值更容易,而无需使用条件语句。

おすすめ

転載: juejin.im/post/7078655273925083167