精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产成人精品久久二区二区91| 在线播放日韩导航| 欧美日韩一区二区三区在线视频| 亚洲无码精品一区二区三区| 日韩欧美一区免费| 555www色欧美视频| 成人免费视频91| 久草在现在线| 国产一区二区调教| 欧美亚洲在线观看| 永久免费看片直接| 婷婷综合电影| 欧美一区二区三区在线视频| www日韩大片| 欧美激情按摩在线| 欧美日韩国产黄色| 国内精品偷拍| 制服丝袜亚洲精品中文字幕| 俄罗斯av网站| 成年视频在线观看| 久久久久久久久久久黄色| 亚洲字幕一区二区| 中文字幕在线观看精品| 亚洲毛片一区| 欧美人在线视频| 中文字幕精品亚洲| 婷婷精品在线| 亚洲国产精品人久久电影| 亚洲三级在线观看视频| 在线看片国产福利你懂的| 亚洲精品综合在线| 亚洲视频在线二区| 国产高清视频在线播放| 波多野结衣精品在线| 成人欧美一区二区三区在线| 国产女主播喷水视频在线观看| 精品电影一区| 欧美成人免费全部| 日本黄色录像视频| 日韩欧美视频专区| 伊人久久大香线蕉av一区二区| 91黄色免费视频| 日韩精品视频中文字幕| 欧美精品久久久久久久多人混战 | 日韩欧美午夜| 亚洲图片在区色| 37p粉嫩大胆色噜噜噜| 老司机aⅴ在线精品导航| 日韩免费一区二区| 日本黄色一级网站| 国产一区二区三区国产精品| 欧美另类高清zo欧美| 麻豆三级在线观看| 久久精品黄色| 欧美日韩卡一卡二| 男人添女人下面免费视频| 日本japanese极品少妇| 大片免费在线看视频| 国产精品福利电影一区二区三区四区| 欧美日韩在线精品| 国产视频三级在线观看播放| 久久久久国产精品人| 欧美高清性xxxxhd| 日本国产在线| 国产亚洲欧美色| 午夜一区二区三区| 美女黄视频在线观看| 国产精品不卡在线| 欧洲金发美女大战黑人| 四虎av在线| 舔着乳尖日韩一区| 成人在线免费播放视频| 成人在线视频观看| 正在播放亚洲一区| 在线观看一区二区三区四区| 精品综合久久88少妇激情| 亚洲精品720p| 免费看黄色av| 91精品一区二区三区综合| 久久99热这里只有精品国产| 久久久久久久黄色片| 免费一区视频| 国产欧美在线看| 国内老熟妇对白xxxxhd| 99久久伊人精品| 亚洲欧美成人一区| 欧美黄色视屏| 色偷偷一区二区三区| 999在线观看| 一区二区三区四区高清视频 | 亚洲 精品 综合 精品 自拍| 日本一区二区三区久久久久久久久不 | 久久久久久伊人| 亚洲欧美另类在线视频| 国产在线看一区| 久久久久久国产精品mv| 麻豆影视在线观看_| 一区二区三区成人| 97视频在线免费播放| 色一情一区二区三区| 欧美尤物美女在线| 亚洲成人777| 欧美伦理片在线观看| 91蝌蚪精品视频| 一区二区三区视频观看| 久久午夜鲁丝片午夜精品| 日韩成人免费电影| 国产精品v欧美精品∨日韩| 高清av在线| 亚洲成人你懂的| 91女神在线观看| 偷窥自拍亚洲色图精选| 欧美成年人网站| 日本丰满少妇做爰爽爽| 成人精品视频一区| 伊人精品久久久久7777| 最新中文字幕在线播放| 日韩三级精品电影久久久| 亚洲日本精品视频| 亚洲看片免费| 99精品欧美一区二区三区| av小片在线| 色爱区综合激月婷婷| 欧美日韩一区二区区别是什么| 欧美日韩国产高清电影| 97超级碰碰碰| 风流少妇一区二区三区91| 国产精品日韩精品欧美在线| 99精品人妻少妇一区二区| 香港久久久电影| 日韩在线观看高清| 中文字幕一区二区三区免费看| 91亚洲精品久久久蜜桃| 久久香蕉视频网站| 国产亚洲高清一区| 久久视频这里只有精品| 做爰无遮挡三级| 国产日韩欧美综合一区| 干日本少妇首页| 香蕉久久夜色精品国产使用方法 | 美女被久久久| 久久riav二区三区| 蜜桃视频在线网站| 亚洲精品久久久久中文字幕二区| 精品少妇爆乳无码av无码专区| 国产久卡久卡久卡久卡视频精品| 日本xxxxx18| 成人三级做爰av| 欧美天堂一区二区| 中文字幕日韩欧美| 最新中文字幕第一页| 国产午夜精品久久久久久久| 丰满人妻中伦妇伦精品app| www久久久| 久热国产精品视频| 一区精品在线观看| 国产精品热久久久久夜色精品三区 | 成人免费淫片aa视频免费| 午夜视频成人| 91精品国产综合久久久久久久 | 亚洲自拍偷拍在线| 欧美草逼视频| 亚洲福利视频免费观看| 日本道在线观看| 久久九九影视网| 香蕉视频禁止18| 亚洲综合专区| 国产亚洲精品久久飘花| 爱情电影社保片一区| 国产亚洲aⅴaaaaaa毛片| 亚洲综合精品在线| 亚洲精品一二三| 星空大象在线观看免费播放| 性8sex亚洲区入口| 亚洲电影一二三区| 精品国产一区二| 韩国精品久久久999| 每日更新在线观看av| 欧美少妇xxx| 日本在线一级片| 成人美女在线视频| 日本成年人网址| 93在线视频精品免费观看| 亚洲一区二区三区777| av中文字幕在线看| 亚洲人午夜精品| 国产高清在线观看视频| 精品久久久久久久大神国产| 精品人体无码一区二区三区| 国产成人丝袜美腿| 日韩 欧美 高清| 综合久久婷婷| 农村寡妇一区二区三区| 亚洲综合资源| 精品在线视频一区| 91精品国产综合久久久久久久久| 1769免费视频在线观看| 亚洲美女黄色片| 国产精品自偷自拍| 欧美性极品xxxx做受| 亚洲色图综合区| 久久精品日韩一区二区三区| 日韩精品视频网址| 日韩精品电影在线观看| 又大又硬又爽免费视频| 日韩精品欧美激情一区二区| 国产亚洲欧美另类一区二区三区| 久久69成人| 日本国产高清不卡| 成人在线播放免费观看| 亚洲香蕉av在线一区二区三区| 精品国产一级片| 欧美午夜免费电影| 久久国产免费观看| 国产欧美日韩视频在线观看| 欧美大喷水吹潮合集在线观看| 美女国产一区二区三区| 日韩亚洲在线视频| 日韩午夜免费视频| 久久av高潮av| 天天综合网91| 亚洲电影一二三区| 精品国产91| 欧美三日本三级少妇三99| 成人自拍在线| 91精品久久香蕉国产线看观看| 色综合天天色| 日本老师69xxx| 久草在线资源站手机版| 欧美激情三级免费| 成人福利在线观看视频| 日韩中文字幕视频在线| 国产高清美女一级毛片久久| 日韩av在线影院| 全部免费毛片在线播放一个| 欧美一区二区三区公司| 国产精品国产三级国产aⅴ| 欧美色男人天堂| 无码人妻一区二区三区免费| 欧美视频免费在线观看| 六月丁香婷婷综合| 婷婷久久综合九色综合绿巨人 | 日本少妇一级片| 国产一区 二区 三区一级| www.五月天色| 韩国理伦片一区二区三区在线播放| 91色国产在线| 蜜臀av性久久久久av蜜臀妖精 | 国产成人精品综合在线观看| 深爱五月综合网| 国产东北露脸精品视频| 特黄特色免费视频| 成人精品小蝌蚪| 久久久久亚洲AV成人无码国产| 亚洲精品18在线观看| 亚洲激情图片qvod| 久久久久久国产精品视频| 一区二区在线电影| 久操免费在线视频| 精品av在线播放| 精品免费囯产一区二区三区| 色就色 综合激情| 国产乱码在线观看| 3d成人h动漫网站入口| 成人免费一级视频| 日韩精品在线观看视频| 二人午夜免费观看在线视频| 日日骚久久av| 在线观看中文字幕的网站| 韩国欧美亚洲国产| 88xx成人免费观看视频库| 国产精品电影观看| 国产在线一区不卡| 韩国成人av| 残酷重口调教一区二区| 亚洲欧洲一区二区福利| 欧美大片专区| 国产免费黄视频| 免费观看一级特黄欧美大片| 一级黄色片在线免费观看| 夫妻av一区二区| 亚洲女优在线观看| 亚洲女同ⅹxx女同tv| 五月婷婷中文字幕| 欧美日韩一二三区| 黄色片一区二区三区| 亚洲社区在线观看| 中文字幕在线观看网站| 欧洲午夜精品久久久| 成人97精品毛片免费看| 黄色99视频| 97国产精品| 国产美女无遮挡网站| 精品一区二区三区免费毛片爱| 制服丝袜在线第一页| 日本一区二区成人| 久久精品欧美一区二区| 欧美三级韩国三级日本一级| 亚洲美女性生活| 色久欧美在线视频观看| √8天堂资源地址中文在线| 国产精品视频公开费视频| 97视频一区| 一本一道久久a久久综合精品 | 成人羞羞国产免费网站| 国产麻豆视频一区| 在线看片中文字幕| 亚洲一级在线观看| 97超碰人人草| 亚洲乱码一区二区| 国产丝袜精品丝袜| 国产免费亚洲高清| 欧美激情在线免费| 国产精品videossex国产高清| 七七婷婷婷婷精品国产| 疯狂揉花蒂控制高潮h| 一区二区激情视频| 亚洲一区在线观| 欧美天天视频| 欧美两根一起进3p做受视频| 粉嫩av亚洲一区二区图片| 免费一级suv好看的国产网站| 黑丝美女久久久| www.com欧美| 伦理中文字幕亚洲| 粉嫩91精品久久久久久久99蜜桃| 欧美国产一区二区在线| 亚洲国产精品一区制服丝袜| 国产xxxxhd| 最新日韩在线视频| 中国一级特黄视频| 亚洲色图第三页| 天堂中文av在线资源库| 国产成人精品日本亚洲11| 综合天堂av久久久久久久| 91女神在线观看| 中文字幕中文字幕在线一区| 波多野结衣黄色网址| 亚洲天堂精品在线| 久九九久频精品短视频| 欧美高清一区二区| 免费欧美网站| 亚洲精品水蜜桃| 国产永久免费视频| 精品国产一区av| 亚洲网站免费| 亚洲第一精品区| 狠狠色狠狠色合久久伊人| 啪啪一区二区三区| 7777女厕盗摄久久久| 黄色网址视频在线观看| 91探花福利精品国产自产在线| 久久国产精品亚洲人一区二区三区| 成年人在线观看视频免费| 欧美激情综合五月色丁香小说| 亚洲视屏在线观看| 色琪琪综合男人的天堂aⅴ视频| 最新日韩一区| 一区二区三区久久网| 久久97超碰色| 九九热精品在线观看| 精品久久久久香蕉网| 国产后进白嫩翘臀在线观看视频| 成人羞羞视频免费| 国产欧美日韩一级| 国产又黄又粗视频| 在线成人免费观看| 国产二区三区在线| 国产成人精品一区二区三区福利| 在线欧美视频| 丰满少妇在线观看资源站| 在线精品观看国产| 日本在线观看| 国产99视频精品免费视频36| 一本久久综合| 久久日免费视频| 日韩一区二区精品在线观看| 草草视频在线| 亚洲电影一二三区| 国产成人精品影视| 亚洲AV无码成人精品区东京热| 这里只有精品久久| 风间由美性色一区二区三区四区| 日韩精品―中文字幕| 日本一二三四高清不卡| 亚洲精华国产精华精华液网站| 国产91精品网站| 综合激情在线| av女人的天堂| 欧美电影免费提供在线观看| 午夜欧美激情| 久久久久久久久影视| 久久久精品免费网站| 国产手机精品视频| 日本精品一区二区三区在线| 欧美一区二区三区免费看| 国产全是老熟女太爽了| 日韩欧美你懂的| 精品网站在线| 欧美,日韩,国产在线|