ES2022 中的4個最重要的特性
ECMAScript 2022 是一項新的 JavaScript 標準,將於 2022 年 6 月釋出。
1. 陣列中的at()方法
ES2022將為我們提供一種可能性,即從末端索引類似陣列的物件。這是一個很小的功能,但它提高了處理陣列或字串時的核心可讀性。
At()方法中的正數與[]索引的作用相同,但如果是負數,則允許從末尾訪問數值。
原來:
const arr = [1,2,3,4] arr[arr.length - 2] // 3 arr.slice(-2)[0] // 3 const str = "1234" str[str.length - 2] // '3' str.slice(-2)[0] // '3' |
新的at()方法:
const arr = [1,2,3,4] arr.at(-2) // 3 const str = "1234" str.at(-2) // '3' |
2. 錯誤原因
.cause物件上的.cause屬性將允許我們指定哪個錯誤導致其他錯誤。非常不言而喻吧?在這裡你可以看到這個新功能的一個使用例子。
try { doSomeComputationThatThrowAnError() } catch (error) { throw new Error('I am the result of another error', { cause: error }) } |
錯誤原因將是一個完美的方法,可以將錯誤連在一起,這在其他程式語言如Java中是可能的。
3. 頂層的await
你知道你不能在函式之外的程式碼中直接使用await嗎?如果不知道,那麼這對你來說不是什麼大問題。但對於其他人來說--不必擔心,因為ES2022將改變這一點。
- 它允許動態地載入模組
const serviceName = await fetch("https://example.com/what-service-should-i-use") const service = await import(`/services/${serviceName}.js`) // OR const params = new URLSearchParams(location.search); const theme = params.get('theme'); const stylingFunctions = await import(`/styling-functions-${theme}.js`); |
- 它允許有條件地渲染模組
const date = new Date() if(date.getFullYear() === 2023) { await require('/special-code-for-2023-year.js') } |
4. 私有槽slot和方法
純Javascript中的類從ES6開始就存在了,但與物件導向的語言相比,它們的開發程度要低很多。許多開發者使用Typescript來包含其中的一些功能,現在我們可以看到在純Javascript類中被實現。
私有槽是其中之一。它們只不過是類的私有屬性。ES2022將為我們提供建立它們的可能性,當我們試圖在類之外訪問它們時,會得到一個錯誤。私有方法也是如此。有趣的是,JS團隊選擇給他們字首(這與JS的傳統有關嗎?)
class Human { name = "John"; setName(name) { this.name = name; } } const human = new Human() human.name = 'Amy' // ERROR! human.setName('Amy') // OK |
私有方法:
class Human { name = "John"; constructor(name) { this.setName('Amy') // OK } setName(name) { this.name = name; } } const human = new Human() human.setName('Amy') // ERROR! |
相關文章
- ES2022新特性
- CSS三個非常重要的特性分享!CSS
- Python中XGBoost的特性重要性和特性選擇Python
- 三,ES6中需要注意的特性(重要)
- 10G: 為DBA 提供的最重要的 20 個新特性
- 專案成本管理的4個重要步驟
- Go 語言的 4 個特性改動Go
- Java中獲取URI最後一個路徑段的4種方法Java
- 伺服器中的幾個重要引數伺服器
- Oracle 資料庫 10g:為 DBA 提供的最重要的 20 個特性Oracle資料庫
- JavaEE中遺漏的10個最重要的安全控制Java
- 【譯】Visual Studio 17.8 中我最喜歡的特性
- 微軟C# 8.0中的幾個特性微軟C#
- SpriteKit 在iOS個版本中的新特性iOS
- 技術成長中的3個重要問題
- IT綜合是IT行業中的一個重要領域行業
- 【盤點】Python中6個最重要的庫!Python
- MySQL程式設計中的6個重要的實用技巧MySql程式設計
- Go最重要的特性是invisible - JackGo
- CSS中重要的BFCCSS
- 企業級Java應用最重要的4個效能指標Java指標
- 分享Java面試中的幾個重要基礎問題!Java面試
- React 開發中面臨的九個重要抉擇React
- Android多媒體框架中幾個重要的類Android框架
- HTML5 中 40 個最重要的技術點HTML
- 4 月 COPR 中的 4 個新酷專案
- 聊聊企業級 Java 應用最重要的4個效能指標Java指標
- 兩個重要的等待事件!事件
- C#各個版本中的新增特性詳解C#
- 你可能沒聽過的 Java 8 中的 10 個特性Java
- 4 個 TypeScript 5.1 Beta 版重要更新內容TypeScript
- 軟體最傑出的十個成功(4,5) (轉)
- Twist Image:最願意點選的廣告的特性
- 前端知識科普:HTML5中重要的6個點!前端HTML
- Oracle記憶體中的幾個重要監控指標Oracle記憶體指標
- 路由器協議最為重要的種類路由器協議
- SaaS的三個特性
- CRM客戶管理系統的五大重要特性