es2021 新特性

1. string的新方法replaceAll

很舒服,替换字符串中指定字符为新的字符,简单的全局替换不强依赖正则了

'大海星辰,星辰大海'.replaceAll('星辰','满眼星辰')
// "大海满眼星辰,满眼星辰大海"

2. 数值分割符

网爆某女明星片酬1.6亿元,如果用数值表达就是160000000元,贫穷限制了0的的认知,数的好心累,es2021为了大家方便,添加了下面的写法,以下划线(_)任意个数分割

1_6000_0000
// 160000000
160_000_000
// 160000000

3.新的内置对象WeakRef

WeakRef对象允许您保留对另一个对象的弱引用,而不会阻止被弱引用对象被GC回收
尽量别用
正确使用WeakRef对象需要仔细的考虑,最好尽量避免使用。避免依赖于规范没有保证的任何特定行为也是十分重要的。何时、如何以及是否发生垃圾回收取决于任何给定JavaScript引擎的实现。GC在一个JavaScript引擎中的行为有可能在另一个JavaScript引擎中的行为大相径庭,或者甚至在同一类引擎,不同版本中GC的行为都有可能有较大的差距。GC目前还是JavaScript引擎实现者不断改进和改进解决方案的一个难题。

let obj={name:"tom",age:10,sex:'男',son:{name:"jarray",age:8,sex:"男",son:{name:"susan",age:2,sex:"女"}}}
let ref=new WeakRef(obj)
// 原型上deref方法,返回WeakRef的目标对象
ref.deref()
{name: "tom", age: 10, sex: "男", son: {…}}

4.逻辑运算符与赋值表达式

let num = 5
num+=10
console.log(num) // 15

let a;
let b=100;
a||=b;  //a=a||b;   等价于:if(a== 0|| a === "" ||a=== false ||a === null ||a=== undefined){a=b}
a&&=b; // a=a&&b;  等价于: if(a) {a=b}
a??=b; //a=a??b ; 等价于:   if(a===null||a===undefined){a=b}

5.亮点 Promis.any

类似于Promise.all和Promise.race,又区别于他们
Promise.any,接收一个可迭代对象,当有一个promise 成功,就会返回那个已经成功的promise
如果可迭代对象中没有一个promise成功,才会返回一个失败的promise和AggregateError类型的实例,他是Error的一个子类,用于把单一的错误集合在一起。

    const addRemote = async (a, b) => new Promise((resolve,reject) => {
        setTimeout(() => reject(), 1000)
    })
    let promise1=addRemote(1,2)
    let promise2=addRemote(1,3)
    let promise3=addRemote(1,4)
    Promise.any([promise1,promise2,promise3]).then(res=>{
        console.log(res,'成功')
    }).catch(err=>{
        console.log(err,'失败')
    })
    // test.html:26 AggregateError: All promises were rejected "失败"

成功,不在乎先后,有一个成功的就行

    const addRemote = async (a, b) => new Promise((resolve, reject) => {
        setTimeout(() => resolve(a + b), 3000)
    })
    const addRemote2 = async (a, b) => new Promise((resolve, reject) => {
        setTimeout(() => reject(), 1000)
    })
    let promise1 = addRemote(1, 2)
    let promise2 = addRemote2(1, 3)
    let promise3 = addRemote2(1, 4)
    Promise.any([promise1, promise2, promise3]).then(res => {
        console.log(res, '成功')
    }).catch(err => {
        console.log(err, '失败')
    })

应用场景

  • 从最快的服务器检索资源
    来自世界各地的用户访问网站,如果有多个服务器,尽可能使用响应速度最快的服务器,在这种情况下使用Promise.any()方法体验最佳
    Promise.all 一个失败,就是失败,有成功也是失败
    Promise.any一个成功,就是成功,有失败也是成功
    Promise.race谁快算谁的,不管成功或者失败,第一个结果就是最终结果。可以处理超时
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容