ES2020 中 Javascript 10 個(gè)你應(yīng)該知道的新功能

作者 | xiaoT
鏈接 | https://juejin.im/post/6844904137277046797
1、BigInt
pow(2, 53) - 1。但是,BigInt 不受此限制。
n。這個(gè) n 說(shuō)明這是一個(gè) BigInt,Javascript 引擎應(yīng)該特殊處理(不管是 V8,還是其它引擎)。2、動(dòng)態(tài)引入

3、?空值合并
nullish 值,而不是 falsely 值。你或許會(huì)問(wèn):nullish 和 falsely 之間有什么不同呢?falsely。比如:空字符串、數(shù)字 0、undefined 、null、 false 、NaN 等。undefined 或者 null,就像變量可以是一個(gè)空字符串甚至是一個(gè)假值。??。
4、可選鏈
undefined。
5、Promise.allSettled
Promise.allSettled 方法接收一組 Promise,并且會(huì)返回所有的結(jié)果 - 而不管是 resolved 還是 rejected。race 和 all。它只會(huì)“運(yùn)行所有的 promise - 而不關(guān)心它們的結(jié)果”。
6、String#matchAll
matchAll 是 String 原型鏈上的一個(gè)新增的方法,它可以關(guān)聯(lián)正則表達(dá)式。它返回一個(gè)迭代器,一個(gè)接一個(gè)的返回所有匹配的組。我們來(lái)看一個(gè)演示:
7、?globalThis
window,Node 中是 global,web workers 中是 self。如果,還有更多的運(yùn)行環(huán)境,這個(gè)對(duì)象也會(huì)有不同。globalThis 對(duì)象,它始終會(huì)引用著全局對(duì)象,而不用關(guān)系代碼在哪運(yùn)行:
8、導(dǎo)出模塊的命名空間
Javascript 模塊中,一直都可以使用以下這種語(yǔ)法:
import * as utils from './utils.mjs'
然而,直到現(xiàn)在還不可以像以下這樣使用 export 語(yǔ)法:
譯者注:目前是支持的(2020-04-24)
export * as utils from './utils.mjs'
以上和以下結(jié)果相同:
import * as utils from './utils.mjs'export { utils }
9、明確定義 for-in 的順序
ECMA 規(guī)范中并沒(méi)有明確定義 for (x in y) 的順序。盡管,在此之前瀏覽器實(shí)現(xiàn)了一致的順序,但是,現(xiàn)在已經(jīng)被納入到 ES2020 的官方規(guī)范中了。
10、?import.meta
import.meta 是由 ECMAScript 創(chuàng)建實(shí)現(xiàn)的,默認(rèn)為 null。
考慮一下這個(gè)模塊,module.js :
你可以通過(guò) import.meta 對(duì)象訪(fǎng)問(wèn)模塊的相關(guān) meta 信息:
console.log(import.meta); // { url: "file:///home/user/module.js" }
它返回一個(gè)包含 url 屬性的對(duì)象,該屬性代表著模塊的 URL。它可能是獲取腳本的 URL(對(duì)于外部腳本來(lái)說(shuō)),或者是包含模塊文檔的基礎(chǔ)URL(對(duì)于內(nèi)聯(lián)腳本來(lái)說(shuō))。
總結(jié)
我喜歡 Javascript 社區(qū)不斷發(fā)展的一致性和速度。看看 Javascript 如何從一種經(jīng)過(guò)十年的噓聲演變成如今這種最強(qiáng)大、最靈活和最通用的語(yǔ)言,真的很神奇。
你是否希望用一種全新的方式學(xué)習(xí) Javascript 和其它的編程語(yǔ)言?我正在開(kāi)發(fā)一個(gè)全新的開(kāi)發(fā)者平臺(tái) ,現(xiàn)在可以試下!
ES2020 中功能哪個(gè)是你喜歡的呢?可以在留言區(qū)給我們留言。

