JS_ES2021新增特性

男娘i 2022-09-12 11:43 272阅读 0赞

features

  • String.prototype.replaceAll()
  • Promise.any
  • WeakRef
  • &&=, ||= and ??=
  • Numeric separators

String.prototype.replaceAll()

在此之前只能使用正则替换,现在可以直接使用一个快捷方式;replaceAll。

  1. //前
  2. 'jxvxscript'.replace(/x/g, 'a');
  3. //后
  4. // jxvxscript becomes javascript
  5. 'jxvxscript'.replaceAll('x', 'a');

Promise.any

Promise.any() 接收一个Promise可迭代对象,只要其中的一个 promise 成功,就返回那个已经成功的 promise 。
如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败的 promise

  1. const promise1 = new Promise((resolve, reject) => reject('我是失败的Promise_1'));
  2. const promise2 = new Promise((resolve, reject) => reject('我是失败的Promise_2'));
  3. const promiseList = [promise1, promise2];
  4. Promise.any(promiseList).then(values=>{
  5. console.log(values);
  6. })
  7. .catch(e=>{
  8. console.log(e);
  9. });

WeakRefs

使用WeakRefs的Class类创建对对象的弱引用(对对象的弱引用是指当该对象应该被GC回收时不会阻止GC的回收行为)

Logical Assignment Operators

包括这些运算符:&&=, ||= ,??= ;

  1. a = 1;
  2. b = 2;
  3. a&&=b // a=2
  4. /* 以上代码相当于 a && a = b ??= 作用相当于 if(a == null || a==undefined){ a=b } */

Numeric Separators —— 数字分隔符

数字增加分隔符,可以使用_分割数字,方便阅读较大的数字 对于跟数字打交道比较多的同学来说,可能会更加舒服

  1. // previous syntax before ES12
  2. const number = 92145723;
  3. // new syntax coming with ES12
  4. const number = 92_145_723;
  5. console.log(number) // 92145723
  6. //对国人来说可以这样,万,亿为单位
  7. const number = 1_0000;
  8. console.log(number) // 10000

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jdk8 新增特性

    Java 8已于2014年3月18日正式发布了, [新版本带来了诸多改进][Link 1],包括Lambda表达式、Streams、日期时间API等等。 本文就带你领略Java