你應該知道的ES2020中的10個JavaScript新特性

好消息– ES2020的新功能現已完成!這意味着我們現在對ES2020中發生的變化有了完整的瞭解,ES2020是JavaScript的新的和改進的規範。因此,讓我們看看這些變化是什麼。

1. BigInt

BigInt是JavaScript中最令人期待的功能之一,終於來了。實際上,它允許開發人員在其JS代碼中使用更大的整數表示形式進行數據處理和數據處理。

目前,你可以在JavaScript中存儲爲整數的最大數量爲pow(2,53)-1。但是BigInt實際上允許您超越此範圍。

bigInt pic

但是,如上所示,你需要在數字的末尾附加n。 n表示這是一個BigInt,JavaScript引擎(v8引擎或它使用的任何引擎)應該對它們進行不同的處理。

此改進不向後兼容,因爲傳統的數字系統是IEEE754(它不能支持這種大小的數字)。

2. 動態import

JavaScript中的動態導入使您可以選擇將JS文件作爲模塊自然地動態導入應用程序中。這就像您當前使用Webpack和Babel的方式一樣。

此功能將幫助您發送按需請求的代碼(通常稱爲代碼拆分),而不會增加webpack或其他模塊捆綁器的開銷。如果你願意,還可以根據條件在if-else塊中加載代碼。

好消息是你實際上導入了一個模塊,因此它永遠不會污染全局名稱空間。

bigInt pic

3. 空值合併運算符

空值合併增加了真正檢查空值而不是假值的能力。您可能會問,空值和假值之間有什麼區別?

在JavaScript中,很多值都是false,例如空字符串,數字 0,undefined,null,false,NaN等。

但是,很多時候你可能想檢查一個變量是否爲空-即它是undefined還是爲null,例如,當變量可以爲空字符串或甚至爲假值時就可以了。

在這種情況下,您將使用新的無效合併運算符,??

您可以清楚地看到OR運算符如何始終返回真實值,而null運算符如何返回非null值。(譯者注:OR運算符指的是"||")

4. 可選鏈操作符

可選的鏈接語法使您可以訪問深度嵌套的對象屬性,而不必擔心該屬性是否存在。如果存在,那就太好了!否則,將返回undefined

這不僅適用於對象屬性,而且適用於函數調用和數組。超級方便!這是一個例子:

04

5. Promise.allSettled

Promise.allSettled方法接受一個Promises數組,並且僅在所有這些Promises都已結算時才解決resolved或rejected。

這在本機之前是不可用的,儘管有些類似raceall的實現都是可用的。這將“只運行所有承諾-我不關心結果”這一特性引入到JavaScript中。

15

6. String#matchAll

matchAll是添加到String原型的與正則表達式相關的新方法。這將返回一個迭代器,該迭代器一個接一個地返回所有匹配的組。讓我們看一個簡單的例子:

16

7. globalThis

如果你編寫了一些可以在Node上,瀏覽器環境以及web-workers內部運行的跨平臺JS代碼,那麼將很難掌握全局對象。

這是因爲它是瀏覽器的window,node的global,web workers的self。如果有更多的運行時,它們的全局對象也將不同。

因此,到目前爲止,你必須擁有自己的檢測運行時的實現,然後使用正確的全局。

ES2020爲我們帶來了globalThis,它總是指向全局對象,無論你在哪裏執行代碼:

007

8. 模塊命名空間導出

在JavaScript模塊中,已經可以使用以下語法:

import * as utils from './utils.mjs'

但是,到目前爲止,還沒有對稱的export語法:

export * as utils from './utils.mjs'

這等效於以下內容:

import * as utils from './utils.mjs'
export { utils }

9. 定義明確for-in的順序

ECMA規範未指定**for(x in y)**應按哪個順序運行。即使以前瀏覽器自己實現了一致的順序,但ES2020已正式對其進行標準化。

10. import.meta

import.meta對象是由ECMAScript實現創建的,具有空原型。
考慮模塊module.js:

<script type="module" src="module.js"></script>

您可以使用import.meta對象訪問有關模塊的元信息:

console.log(import.meta); // { url: "file:///home/user/module.js" }

它返回一個帶有url屬性的對象,該屬性指示模塊的基本URL。這將是從中獲取腳本的URL(對於外部腳本),或者是包含文檔的文檔基礎URL(對於內聯腳本)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章