精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

該來的還是來了,盤點 ES12 中有新特性!

開發 前端
今天主要介紹一下 ECMAScript 2021(ES12)的一部分的 JS 功能。主要介紹邏輯賦值操作符,數字分隔符(1_000)等五項功能。

[[411397]]

今天主要介紹一下 ECMAScript 2021(ES12)的一部分的 JS 功能。

  1. 邏輯賦值操作符
  2. 數字分隔符(1_000)
  3. Promise.any 與 AggregateError
  4. String.prototype.replaceAll
  5. WeakRefs 與 FinalizationRegistry 對象

邏輯賦值操作符

邏輯賦值操作符將邏輯操作(&&、||或??)與賦值表達式組合在一起。

  1. x ||= y; 
  2. x || (x = y); 
  3.  
  4. x &&= y; 
  5. x && (x = y); 
  6.  
  7.  
  8. x ??= y; 
  9. x ?? (x = y); 

帶有&&的邏輯賦值操作符

  1. let x = 1; 
  2. let y = 2; 
  3. x &&= y; 
  4. console.log(x); // 2 

x &&= y 等價于 x && (x = y)。

或者等價于

  1. if(x) { 
  2.   x = y 

因為x是一個真值,所以它被賦值為y,即2。

帶有||的邏輯賦值操作符

  1. let x = 1; 
  2. let y = 2; 
  3. x ||= y; 
  4. console.log(x); // 1 

x ||= y 等價于 x || (x = y)。

這意味著賦值操作只在x為虛值時才會發生。在我們的代碼中,x包含1,這是一個真值,因此,賦值不會發生。這就是我們的代碼在控制臺中打印1的原因。

簡單地說

  1. const updateID = user => { 
  2.  
  3.   // 我們可以這樣做 
  4.   if (!user.id) user.id = 1 
  5.  
  6.   // 或者這樣 
  7.   user.id = user.id || 1 
  8.  
  9.   // 或者這樣 
  10.   user.id ||= 1 

帶有??的邏輯賦值操作符

?? 在 JS 中專門檢查一個值是否為 null 或undefined。

  1. let a; 
  2. let b = a ?? 5; 
  3. console.log(b); // 5 

在第二行,let b = a ?? 5,如果a的值為null 或undefined,??求值并賦值給b。

現在考慮?? 和==。

  1. let x; 
  2. let y = 2; 
  3. x ??= y; 
  4. console.log(x); // 2 

x ??= y 等價于 x = x ?? (x=y)

數字分隔符

它允許我們在數字之間添加下劃線(_)字符,使數字更具可讀性。

例如

  1. const num = 100000000 

被0的數量所迷惑

分隔符解決這個問題:

  1. const num = 100_000_000 

分隔符可以用于數字的整數部分和小數部分。

  1. const num = 1_000_000.123_456 

分隔符不僅可以用在整數和浮點數中,也可以用在二進制、十六進制、八進制字面量中。

分隔符也適用于BigInt數字。

  1. const trillion = 1000_000_000_000n; 
  2. console.log(trillion.toString()); // "1000000000000" 

分隔符只是為了可讀性。所以,它可以放在數字內的任何地方。

  1. const amount = 178_00; // 00 after _ for cents. 

Promise.any 與 AggregateError

Promise.any()返回第一個完成的promise的值。如果所有傳遞給Promise.any()作為參數(作為數組)的Promise都被拒絕,則拋出一個"AggregateError"異常。

AggregateError`是一個新的Error子類,它對單個錯誤進行分組。每個AggregateError實例都包含一個對異常數組的引用。

考慮下面例子:

下面我們有3個 promise,它們是隨機的。

  1. const p1 = new Promise((resolve, reject) => { 
  2.   setTimeout(() => resolve("A"), Math.floor(Math.random() * 1000)); 
  3. }); 
  4. const p2 = new Promise((resolve, reject) => { 
  5.   setTimeout(() => resolve("B"), Math.floor(Math.random() * 1000)); 
  6. }); 
  7. const p3 = new Promise((resolve, reject) => { 
  8.   setTimeout(() => resolve("C"), Math.floor(Math.random() * 1000)); 
  9. }); 

在p1, p2和p3中,最先的完成的的由Promise.any()執行。

  1. (async function() { 
  2.   const result = await Promise.any([p1, p2, p3]); 
  3.   console.log(result); // 打印 "A""B" 或者 "C" 
  4. })(); 

如果所有的 promise 都失敗了?在這種情況下,Promise.any()拋出AggregateError異常。我們需要捕獲它:

  1. const p = new Promise((resolve, reject) => reject()); 
  2.  
  3. try { 
  4.   (async function() { 
  5.     const result = await Promise.any([p]); 
  6.     console.log(result); 
  7.   })(); 
  8. } catch(error) { 
  9.   console.log(error.errors); 

為了演示的目的,在Promise.any()中我們只能它一個 promise。而這個 promise 是失敗的。上述代碼在控制臺中記錄了以下錯誤。

String.prototype.replaceAll 方法

String.prototype.replaceAll()允許我們用一個不同的值替換字符串中的所有子串實例,而不需要使用全局正則表達式。

目前,JavaScript字符串有一個replace()方法。它可以用來用另一個字符串替換一個字符串。

  1. const str = "Backbencher sits at the Back"
  2. const newStr = str.replace("Back""Front"); 
  3. console.log(newStr); // "Frontbencher sits at the Back" 

如果輸入模式是一個字符串,replace()方法只替換第一次出現的內容。這就是為什么在代碼中,"Back"的第二次出現沒有被替換。

只有將模式作為正則表達式提供時,才能進行完全替換。

  1. const str = "Backbencher sits at the Back"
  2. const newStr = str.replace(/Back/g, "Front"); 
  3. console.log(newStr); // "Frontbencher sits at the Front" 

我們來看另一個例子

  1. const strWithPlus = '++' 
  2. const strWithComma = strWithPlus.replace(/+/g, ', '
  3. // , ,  

這種方法需要使用正則表達式。然而,復雜的正則表達式往往是錯誤的來源。(沒有人喜歡RegEx 😬)

還有另一種方法是使用String.prototype.split()和Array.prototype.join()方法

  1. const strWithPlus = '++' 
  2. const strWithComma = strWithPlus.split('+').join(', '
  3. // , ,  

這種方法避免使用正則表達式,但是必須將字符串拆分為單獨的部分(單詞),將其轉換為一個數組,然后將數組元素連接為一個新字符串。

string.prototype.replaceAll()解決了這些問題,并為全局替換子串提供了簡單而方便的方式:

  1. const strWithPlus = '++' 
  2. const strWithComma = strWithPlus.replaceAll('+'', '
  3. // , , 

注意:如果使用全局正則表達式作為查找值,那么replace和replaceAll的行為是一樣的。

WeakRefs 與 FinalizationRegistry 對象

WeakRef 是弱引用的意思。弱引用的主要用途是實現大型對象的緩存或映射。在這種情況下,我們不希望長期保留大量的內存來保存這種很少使用的緩存或映射。我們可以讓內存很快被垃圾回收,以后如果我們再次需要它,我們可以生成一個新的緩存。

JS 是會自動垃圾收集。如果一個變量不再可達,JS 垃圾收集器將自動刪除它。你可以在MDN中閱讀更多關于 JS 垃圾收集的內容。

WeaseRefs(弱引用)提供了兩個新功能:

  • 使用WeakRef類創建對對象的弱引用
  • 使用FinalizationRegistry類在垃圾收集之后運行自定義收集器

簡而言之,WeakRef允許我們創建對象的弱引用,這些對象是另一個對象的屬性值,而finalizers可以用來,除其他外,移除對被垃圾收集器 "清理"過的對象的引用。

在創建使用內置緩存的記憶化(memoization)函數時,如果緩存中存在傳遞給函數的參數的計算值,這種技術可能很有用(前提是對象被用作緩存對象的屬性值,以及它們隨后被刪除的風險),以防止重復執行函數。

在構建內聯緩存時

  • 如果沒有內存泄漏的風險,那么使用 Map
  • 當使用可以隨后刪除對象的鍵時,使用 WeakMap
  • 當使用可以隨后刪除的值對象時,請將Map與WeakRef結合使用

提案中最后一個例子:

  1. function makeWeakCached(f) { 
  2.   const cache = new Map() 
  3.   return key => { 
  4.     const ref = cache.get(key
  5.     if (ref) { 
  6.       //      
  7.       const cached = ref.deref() 
  8.       if (cached !== undefined) return cached; 
  9.     } 
  10.  
  11.     const fresh = f(key
  12.     //    ( ) 
  13.     cache.set(key, new WeakRef(fresh)) 
  14.     return fresh 
  15.   }; 
  16.  
  17. const getImageCached = makeWeakCached(getImage); 
  • WeakRef構造函數接受一個參數,該參數必須是一個對象,并返回對該對象的弱引用
  • WeakRef 實例的deref方法返回兩個值中的一個。

在內置緩存的情況下,finalizer被設計為在一個值對象被垃圾收集器銷毀后完成清理過程,或者更簡單地說,刪除對這樣一個對象的弱引用。

  1. function makeWeakCached(f) { 
  2.   const cache = new Map() 
  3.   //    -    
  4.   const cleanup = new FinalizationRegistry(key => { 
  5.     const ref = cache.get(key
  6.     if (ref && !ref.deref()) cache.delete(key
  7.   }) 
  8.  
  9.   return key => { 
  10.     const ref = cache.get(key
  11.     if (ref) { 
  12.       const cached = ref.deref() 
  13.       if (cached !== undefined) return cached 
  14.     } 
  15.  
  16.     const fresh = f(key
  17.     cache.set(key, new WeakRef(fresh)) 
  18.     //      ( ) 
  19.     cleanup.register(fresh, key
  20.     return fresh 
  21.   } 
  22.  
  23. const getImageCached = makeWeakCached(getImage); 

作者:KUMAR HARSH

譯者:前端小智 來源:blog 原文:https://dev.to/cenacr007_harsh/es2021-features-3pa

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2020-11-04 11:05:38

JavaScript新特性前端

2022-05-25 07:22:07

ES12JavaScript語言

2021-09-04 05:00:26

ESES2021ES12

2019-12-11 09:00:00

ES7ES8ES9

2013-05-15 22:17:13

DebianDebian Linu

2022-02-07 11:39:09

物聯網物聯網企業IOT

2021-04-30 19:53:41

Java表達式代碼

2012-07-20 09:50:28

2023-12-11 09:02:27

CSS前端CSS 新特性

2024-04-28 09:01:06

React 19更新前端

2009-08-31 10:17:45

VMware vSph

2023-05-04 07:48:29

Debian 12Linux

2024-01-22 00:30:00

Go編程Go 1.22

2021-05-20 05:27:50

安卓系統應用安卓12

2022-05-11 09:35:19

安卓Android 13

2021-01-25 14:20:24

ES2021前端代碼

2023-01-31 07:36:25

JavaScript數組緩沖

2023-11-23 10:21:11

ECMAScriptJavaScript

2023-11-15 20:51:18

TypeScript前端

2020-07-22 08:58:56

C++特性函數
點贊
收藏

51CTO技術棧公眾號

天堂网2014av| 免费一级肉体全黄毛片| 日本美女久久| 亚洲视频免费在线观看| av噜噜色噜噜久久| 亚洲一区欧美在线| 精品免费在线| 日韩欧美精品在线视频| jizzjizz国产精品喷水| 在线国产91| 国产乱码精品一区二区三| 97免费中文视频在线观看| av永久免费观看| 99re8这里有精品热视频免费| 欧美日韩一区二区三区| 波多野结衣激情| 日中文字幕在线| 国模无码大尺度一区二区三区| 7777kkkk成人观看| 国产天堂av在线| 亚洲电影男人天堂| 日韩欧美亚洲另类制服综合在线| 日韩视频在线免费看| 在线网址91| 欧美国产精品中文字幕| 精品久久蜜桃| www.国产黄色| 久色婷婷小香蕉久久| 91国产中文字幕| 激情综合网五月天| 四虎成人av| 亚洲色图50p| 日本丰满少妇裸体自慰| 中文字幕日韩在线| 欧美精品久久久久久久多人混战| 国产v亚洲v天堂无码久久久| av资源新版天堂在线| 亚洲精品国产精品乱码不99| 中文字幕精品一区日韩| 成人欧美亚洲| 国产欧美日韩不卡| 老牛影视免费一区二区| 少妇一级淫片免费看| 国产一区二区不卡在线| 国产在线视频不卡| 91成人在线免费| 毛片av一区二区| 日韩免费在线播放| 少妇太紧太爽又黄又硬又爽 | 2022中文字幕| 日本精品一区二区三区在线播放| 国产亚洲一区二区三区在线观看 | 在线播放免费视频| 羞羞视频在线观看一区二区| 欧美特级限制片免费在线观看| 日韩欧美xxxx| 免费观看成人性生生活片| 欧美色另类天堂2015| 欧美亚洲另类色图| 中文在线а√天堂| 色诱视频网站一区| 午夜激情福利在线| 欧美综合影院| 4438x成人网最大色成网站| 成人不卡免费视频| 日韩精品视频中文字幕| 亚洲精品在线三区| 香港三级日本三级| 国产剧情一区| 中文字幕日韩电影| 国产精品精品软件男同| 国内精品福利| 97精品在线观看| 黄色av一级片| 久久精品久久综合| 99r国产精品视频| 视频一区 中文字幕| 久久精品亚洲精品国产欧美| 日本一区二区视频| 黄色网页网址在线免费| 亚洲国产精品久久艾草纯爱| 国产免费成人在线| 精品福利在线| 精品日韩欧美在线| 人妻无码一区二区三区| 成人羞羞网站入口| 欧美另类精品xxxx孕妇| 天天操中文字幕| 麻豆精品蜜桃视频网站| 97超碰人人看人人| 欧洲成人av| 综合久久综合久久| 欧美日本视频在线观看| 久久日本片精品aaaaa国产| 欧美一区欧美二区| 自拍视频一区二区| 欧美freesextv| 国内精品伊人久久| 中国一级片黄色一级片黄| 国产91在线看| 日本视频一区二区不卡| 在线看女人毛片| 色域天天综合网| 色男人天堂av| 国语产色综合| 欧美精品成人91久久久久久久| 国产字幕在线观看| 高清不卡在线观看| 亚洲精品乱码久久久久久蜜桃91| 国产在线拍揄自揄拍视频| 在线免费视频一区二区| 久久久久亚洲AV成人网人人小说| 国产中文字幕一区二区三区| 欧美激情18p| 91成人在线免费| 久久久久久久精| 激情小视频网站| 亚洲欧美在线综合| 亚洲欧美日韩精品久久亚洲区| 欧美激情一区二区视频| 免费久久99精品国产| 国产区二精品视| h片在线观看网站| 欧美在线高清视频| 成人网站免费观看| 精品成人在线| 91精品国产99久久久久久红楼 | 老熟妇仑乱视频一区二区| 99a精品视频在线观看| 麻豆成人在线看| 正在播放木下凛凛xv99| 久久婷婷国产综合国色天香 | 日本网站在线观看一区二区三区| 国产精品一区二区三区四区五区| 黄色成人在线观看| 欧美日韩一区二区三区四区五区 | 欧美一级黄色网| 你懂的网站在线| 亚洲国产精品麻豆| 免费不卡的av| 亚洲激情偷拍| 国产区欧美区日韩区| 国产经典三级在线| 精品国产乱码久久久久久图片| 三级全黄做爰视频| 国精产品一区一区三区mba桃花| 中文字幕日韩一区二区三区| 99精品在免费线偷拍| 伊人久久综合97精品| 成人毛片一区二区三区| 国产区在线观看成人精品| 国产最新免费视频| 伊人久久大香线蕉综合网蜜芽| 欧美在线观看网址综合| 亚洲欧美日韩综合在线| 日韩欧美在线中文字幕| 日本xxxxxxxxx18| 日本女人一区二区三区| 亚洲二区自拍| 精品99re| 欧美精品第一页在线播放| 日本波多野结衣在线| 欧美日韩精品中文字幕| 37p粉嫩大胆色噜噜噜| 日韩经典中文字幕一区| 伊人狠狠色丁香综合尤物| 91丨精品丨国产| 欧美日本高清一区| 网站黄在线观看| 日本精品视频一区二区| 亚洲国产精品一区二区久久hs| 激情综合亚洲精品| 黄色a级片免费看| 免费福利视频一区| 国产精品久久久久久超碰| 天堂а√在线资源在线| 欧美大片一区二区| 亚洲 欧美 视频| 中文字幕av不卡| 性高潮久久久久久| 免费精品视频| 一卡二卡3卡四卡高清精品视频| 日韩高清二区| 国语自产精品视频在线看抢先版图片 | 久久精品首页| 中文网丁香综合网| 老司机精品视频在线播放| 国产精品草莓在线免费观看| mm1313亚洲国产精品美女| 国产午夜精品理论片a级探花| 中文字幕一区二区三区四区免费看 | 日本久久高清视频| 青草久久视频| 成人黄色生活片| 欧洲一区精品| 日韩中文字幕亚洲| 无码精品视频一区二区三区| 欧美午夜寂寞影院| 日韩精品一区二区av| 国产精品久久久久久一区二区三区| wwwxxx色| 精品一区二区三区在线播放| 奇米精品一区二区三区| 亚洲女同一区| 日本一区精品| 久久精品福利| 51国偷自产一区二区三区| 最新欧美色图| 久久久视频免费观看| 日本中文字幕视频在线| 亚洲欧美日韩直播| 亚洲第一天堂影院| 在线观看91av| 免费黄色一级大片| 精品国产成人在线| 69xx绿帽三人行| 中文字幕亚洲一区二区va在线| 色偷偷久久人人79超碰人人澡| 岛国一区二区三区高清视频| 校园春色亚洲色图| 色综合色综合网色综合| 91.xxx.高清在线| 日韩精品极品在线观看播放免费视频 | 欧美专区第一页| 伦理av在线| 不卡中文字幕av| av播放在线观看| 亚洲欧美日韩国产中文| 亚洲人妻一区二区| 精品国产电影一区二区| aa视频在线免费观看| 欧美日韩视频专区在线播放| 免费视频久久久| 高潮白浆女日韩av免费看| 国产无遮挡免费视频| 亚洲一区在线视频观看| 欧美日韩免费做爰视频| 亚洲人成在线播放网站岛国 | 天天射天天色天天干| 日韩免费观看高清完整版在线观看| 国产一区二区三区黄片| 欧美日韩精品一区二区天天拍小说 | 国产在线自天天| 亚洲九九九在线观看| 亚洲人在线观看视频| 亚洲精品久久久久久久久久久| 欧洲精品久久一区二区| 亚洲福利在线观看| 天堂中文网在线| 日韩精品在线视频观看| 韩国中文字幕2020精品| 这里只有视频精品| 欧美黄色激情| 欧美大尺度激情区在线播放| 在线观看午夜av| 欧美激情在线狂野欧美精品| 国产三级电影在线播放| 热久久这里只有精品| 亚洲精品一级二级| 国产日韩欧美日韩大片| 高清久久一区| 国产91亚洲精品一区二区三区| 激情av综合| 久久日韩精品| 成人一区而且| 国产树林野战在线播放| 亚洲无线视频| 国产精品97在线| 蜜臀av一区二区三区| 三级性生活视频| 成人午夜在线视频| 国产ts丝袜人妖系列视频| 国产亚洲污的网站| 很污很黄的网站| 亚洲永久精品大片| 亚洲影院在线播放| 欧美男人的天堂一二区| 亚洲精品字幕在线观看| 亚洲欧美成人精品| 日韩精品成人av| 97视频在线观看网址| 国产精品蜜月aⅴ在线| 99精品欧美一区二区三区| 香蕉人人精品| 免费久久久久久| 国产午夜精品一区二区三区欧美| 成人免费在线观看视频网站| 国产成人av影院| 精品国产成人亚洲午夜福利| 玉米视频成人免费看| 亚洲午夜18毛片在线看| 欧美精品在线一区二区三区| 亚洲AV成人无码一二三区在线| 最近日韩中文字幕中文| 好看的中文字幕在线播放| 国产精品男人的天堂| 91亚洲无吗| 一本色道婷婷久久欧美| 一本色道久久综合| 亚洲欧美天堂在线| 久久久久久久久久久久久女国产乱 | 内射后入在线观看一区| 中文字幕欧美亚洲| 精品捆绑调教一区二区三区| 成人在线中文字幕| 免费成人av| 精品国偷自产一区二区三区| 免费成人av资源网| 国产三级国产精品| 亚洲久本草在线中文字幕| 一区二区乱子伦在线播放| 亚洲国产精品久久久久秋霞蜜臀| 欧美成年黄网站色视频| 日本中文字幕久久看| 99a精品视频在线观看| 99精品视频网站| 日本特黄久久久高潮| mm131美女视频| 亚洲动漫第一页| 国产后入清纯学生妹| 视频在线观看一区二区| 唐人社导航福利精品| 精品无人区一区二区三区竹菊| 欧美激情自拍| 91香蕉国产线在线观看| 国产精品传媒视频| 精品久久久久久久久久久国产字幕| 亚洲精品久久久久久久久久久久久 | 亚洲精品手机在线观看| 久久久电影一区二区三区| 91精品国产高潮对白| 欧美成人性福生活免费看| 黄网站在线免费看| 国产免费成人av| 日韩精品久久| 午夜剧场在线免费观看| 中文字幕第一区二区| 高潮无码精品色欲av午夜福利| 亚洲精品天天看| 成人黄色动漫| 久久亚洲综合网| 国产日韩欧美在线播放不卡| 国产二级一片内射视频播放| 精品女厕一区二区三区| 无码精品视频一区二区三区 | 欧美爱爱视频| 尤物一区二区三区| 精品一区二区三区av| 国产美女久久久久久| 欧美一区二区三区在线视频| 八戒八戒神马在线电影| 亚洲精品欧美日韩| 午夜视频一区| 男女性杂交内射妇女bbwxz| 无码av免费一区二区三区试看| 五月激情婷婷网| 欧美一区二区视频97| 免费不卡中文字幕在线| 一区二区三区韩国| 自拍偷拍欧美精品| 亚洲免费不卡视频| 欧美性受xxxx黑人猛交| 国产99精品| 中文字幕永久有效| 亚洲精品亚洲人成人网在线播放| 精品区在线观看| 97精品一区二区三区| 曰本一区二区三区视频| 亚洲成人福利在线观看| 亚洲欧洲精品一区二区三区不卡| 精品国产无码AV| 国模私拍一区二区三区| 国产91精品对白在线播放| 精品久久久99| 亚洲一卡二卡三卡四卡| 毛片在线播放网站| 成人免费看黄网站| 日韩午夜一区| 一级在线观看视频| 日韩三级视频在线看| 在线观看v片| 亚洲一区二区在线免费观看| 盗摄精品av一区二区三区| 日韩人妻精品中文字幕| 不卡av在线播放| 九九视频免费观看视频精品| www.com久久久| 色综合欧美在线视频区| 二区三区四区高清视频在线观看| 精品欧美一区二区三区久久久| 久久综合伊人| 久一区二区三区| 一区二区成人av| 精品三级av| 午夜精品中文字幕| 精品国产老师黑色丝袜高跟鞋| 毛片在线播放a| 欧美精品一区二区视频| 国产河南妇女毛片精品久久久 | 欧美一二三四区在线|