<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          沒想到啊,ES2021居然更新了這樣的5個(gè) API

          共 3389字,需瀏覽 7分鐘

           ·

          2021-03-15 10:57

          • 作者:陳大魚頭
          • github:KRISACHAN

          如果沒什么特殊情況,每一年 tc39 都會(huì)更新一些特性 API ,今年出的則是第 12 版,也就是我們說的 ES12 ,下面讓我們一起來看看都更新了哪些 API。

          數(shù)字分隔符(Numeric Separators)

          眾所周知,我們的 Number 是長這樣的:123456 。但是當(dāng)金額大了之后,就會(huì)很不直觀,每次看還得算,不過如今我們可以這樣:

          // 舊的方案
          const count1 = 123456789;

          // 新的方案
          const count2 = 123_456_789;

          console.log(count2); // 123456789

          String.prototype.replaceAll()

          新的 replaceAll() 可以直接替換全部匹配的字符,就像這樣:

          '好一朵美麗的茉莉花,茉莉花啊,茉莉花啊,你又香又好看'.replaceAll('茉莉花''玫瑰花');
          // 好一朵美麗的玫瑰花,玫瑰花啊,玫瑰花啊,你又香又好看

          但是如果你在 replaceAll() 里用 g 以外的標(biāo)識符,或者不加 g ,都會(huì)報(bào)錯(cuò),例如:

          '好一朵美麗的茉莉花,茉莉花啊,茉莉花啊,你又香又好看'.replaceAll(/茉莉花/'玫瑰花');
          // Uncaught TypeError: String.prototype.replaceAll called with a non-global RegExp argument

          所以這個(gè)只是 g 的語法糖。。。

          邏輯賦值運(yùn)算符(Logical Assignment Operators)

          這次也更新了一些運(yùn)算符,以后寫起短鏈表達(dá)式來就方便多了。

          And and equals 運(yùn)算符 (&&=)

          &&= 僅在左操作數(shù)為 truthy 時(shí)才執(zhí)行賦值。

          let a = 1;
          let b = 2;
          a &&= b;
          console.log(a); // 2

          // 等價(jià)于
          if (a) {
              a = b;
          }
          console.log(a); // 2

          Or or equals (||=)

          ||=&&= 相反,僅當(dāng)左操作數(shù)為 falsy 時(shí)才執(zhí)行賦值。

          let a = undefined;
          let b = 2;

          a ||= b;
          console.log(a); // 2

          // 等價(jià)于
          if (!a) {
              a = b;
          }

          Question question equals (??=)

          ??= 僅當(dāng)左操作數(shù)為 null 或者 undefined 才執(zhí)行賦值。

          let a = undefined;
          let b = 2;

          a ??= b;
          console.log(a); // 2

          // 等價(jià)于
          if (a === null || a === undefined) {
              a = b;
          };

          Promise.any

          這次 Promise 出了一個(gè)新方法 Promise.any ,跟 Promise.all 正好相反,只要有一個(gè)是 promisefulfilled 時(shí),則直接返回該結(jié)果,如果都是 rejected ,則報(bào)錯(cuò) 。

          Promise
            .any([
              Promise.reject('rejected'),
              Promise.resolve('fulfilled')
           ])
           .then(res => console.log(res))
           .catch(err => console.error(err));
          // fulfilled

          Promise
            .any([
              Promise.reject('rejected1'),
              Promise.reject('rejected2')
           ])
           .then(res => console.log(res))
           .catch(err => console.error(err));
          // AggregateError: All promises were rejected

          Promise
            .any([
              Promise.resolve('resolve1'),
              Promise.resolve('resolve1')
           ])
           .then(res => console.log(res))
           .catch(err => console.error(err));
          // resolve1

          WeakRefs

          WeakRefWeak References(弱引用) 的簡寫,其主要用途是對另一個(gè)對象進(jìn)行弱引用。這就意味著它不會(huì)阻止GC(garbage collector 垃圾收集器)收集對象。當(dāng)我們不想將對象永遠(yuǎn)保存在內(nèi)存中時(shí),這就很有用了。但是使用的時(shí)候要慎重,因?yàn)橛锌赡艹霈F(xiàn)要使用時(shí),被引用對象已經(jīng)被回收的情況。就連 TC39 提案都建議能不用就不用。

          const newRef = new WeakRef({
               name'魚頭',
               age'26',
               sex'男'
          });

          const obj = newRef.deref();

          console.log(obj); // {name: "魚頭", age: "26", sex: "男"}

          參考資料

          1. What's new in ECMAScript 2021
          2. Ecma TC39
          3. [ECMAScript] TC39 process
          4. The TC39 Process

          后記

          如果你喜歡探討技術(shù),或者對本文有任何的意見或建議,非常歡迎加魚頭微信好友一起探討,當(dāng)然,魚頭也非常希望能跟你一起聊生活,聊愛好,談天說地。魚頭的微信號是:krisChans95 也可以掃碼關(guān)注公眾號,訂閱更多精彩內(nèi)容。


          瀏覽 92
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  动漫美女操逼视频网站 | 影音先锋一区二区三区视频特色 | 久久久久亚洲AV成人网址老师板 | 一区二区三区四区免费在线 | 超碰夫妻自拍 |