盤點(diǎn)2024年最令人驚嘆的5項JavaScript新功能
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
2024年JavaScript新特性做了哪些升級?讓我們來回顧一下ES15帶來的全新的特性和有前景的提案。( "ES15" 是指 ECMAScript 2024。ECMAScript 是 JavaScript 的標(biāo)準(zhǔn),由 ECMA International 的技術(shù)委員會 TC39 負(fù)責(zé)制定。) 讓我們一起來盤點(diǎn)一下那些令人驚嘆的5項JavaScript新功能。 數(shù)組原生的group-by方法Object.groupBy(): 有了它,也就不在需要Lodash了,現(xiàn)在看Lodash基本大部分功能都有了原生的支持。 我本以為還會有一個類似 Array.prototype.groupBy 的新實(shí)例方法,但不知出于什么原因,它并沒有增加到數(shù)組上。 反倒是在Map上增加了一個靜態(tài)方法, Map.groupBy 對對象鍵進(jìn)行分組: 目前支持使用groupBy的,就是Object和Map了。 Promise.withResolvers有了 或者從 NPM 安裝 - 多一個依賴項! 但現(xiàn)在有了 ES15 中的 Promise.withResolvers(): Promise.withResolvers使得做開關(guān)延遲特別方便,例如在資源加載完畢后resolve。這允許我們在Promise外部控制加載過程,實(shí)現(xiàn)更有效的延遲加載策略,優(yōu)化頁面加載時間和性能。 Buffer性能升級Buffer是用于存儲應(yīng)用程序生成的臨時數(shù)據(jù)的微型數(shù)據(jù)存儲區(qū)。它們使在pipeline的各個階段傳輸和處理數(shù)據(jù)變得異常簡單。 像以下的Pipelines:
有了緩沖器,每個階段處理數(shù)據(jù)的速度各不相同,互不影響。 但是,如果流水線上的數(shù)據(jù)超過了緩沖區(qū)的容量,會發(fā)生什么情況呢? 在此之前,我們必須將當(dāng)前數(shù)據(jù)的緩沖區(qū)全部復(fù)制到一個更大的緩沖區(qū)中。 這對性能的影響非常大,尤其是當(dāng)管道中會有大量數(shù)據(jù)時。 ES15 為我們提供了解決這一問題的方法:可調(diào)整的數(shù)組緩沖區(qū)。 異步升級
在JavaScript中,Atomics對象提供了一組靜態(tài)方法,用于在多線程環(huán)境中以原子方式執(zhí)行操作,比如共享內(nèi)存的操作。Atomics.waitAsync()方法允許開發(fā)者在異步環(huán)境中等待某個條件變量達(dá)到特定值,這在并發(fā)編程中非常有用,因為它可以避免阻塞主線程,同時等待某個事件的發(fā)生。 例如:當(dāng)兩個代理共享一個緩沖區(qū)時 而代理 1 則 Sleep",等待代理 2 完成任務(wù)。 當(dāng)代理 2 完成后,它會使用共享緩沖區(qū)作為通道發(fā)出通知。 如果你認(rèn)為這與普通的 async/await 類似,那你就完全正確了。 但最大的區(qū)別在于這兩個代理可以存在于完全不同的代碼上下文中,它們只需要訪問同一個緩沖區(qū)。 而且:多個代理可以在不同時間訪問或等待共享緩沖區(qū),其中任何一個代理都可以通知 "喚醒 "所有其他代理。 這怎么理解?假設(shè)我們有兩個Web Workers,一個主線程和多個工作線程。工作線程將等待主線程更新一個共享的內(nèi)存位置。 主線程代碼:
工作線程代碼(worker.js):
在這個例子中,工作線程使用 正則升級:v表示&集合操作為了匹配不斷增加的 Unicode 字符集,如
因此,我們在這里使用 Unicode regex 和 v 標(biāo)志來匹配所有希臘字母: 另外在正則表達(dá)式中,集合操作指的是使用字符集(character sets)來匹配多個字符。例如:
而新的語法里增加了如下的新操作符 總結(jié)總體而言,2024 對 JavaScript 來說是一次重大飛躍,它具備了現(xiàn)代開發(fā)所必需的多項功能。 幫助你寫出更簡潔、更具表現(xiàn)力和更清晰的代碼。 閱讀原文:https://mp.weixin.qq.com/s/cHLL6cmCoGmbJMCrUobLig 該文章在 2024/12/28 12:05:30 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |