振奮人心!明年 JavaScript 官方即將推出這四大亮點!
ECMAScript 2024(ES15) 預告是將在 2024年6月 發(fā)布,接下來帶大家盤點一下即將推出的一些頗具亮點的新特性。
Temporal
Temporal 是一個用來處理時間日期的 API,非常的實用。
圖片
Records 和 Tuples
Tuples
Records和Tuples都具有相同的語法。它們可以通過在對象和數(shù)組前面使用#前綴來定義,如下所示:
圖片
使用 Tuples 時,需要注意一些規(guī)則:
- 數(shù)組中不能有空洞,例如:[1, ,2] 是不允許的;
- 它們只能包含原語或其他Tuples和Records;
- 支持類似于Arrays的實例方法,但有一些變化;
例如,改變數(shù)組的操作被替換為返回新數(shù)組的新操作。因此,例如:沒有push,我們可以使用push來返回一個帶有推送值的新元組,或者使用with來更改給定索引處的值:
圖片
我們還可以使用Tuple.from()從現(xiàn)有數(shù)組創(chuàng)建元組:
圖片
當然,它們是不可變的,如果嘗試更改它們的值或使用非原始值,它們會拋出錯誤:
圖片
Records
圖片
處理記錄時,我們還需要牢記一些規(guī)則:
- 不能在記錄中使用__proto__標識符
- 方法也是不允許的。就像元組一樣,它們只能包含原語。
- 要創(chuàng)建新記錄,我們還可以選擇在使用元組時使用Record或Record.fromEntries:
圖片
而且由于它們是新的數(shù)據類型,因此在使用typeof運算符時會返回 record、tuple:
圖片
Promise.withResolvers
有時候我們需要把 Promise 的 resolve 或者 reject 這兩個參數(shù)給取出來,去實現(xiàn)某種目的。
就比如下面例子,我想手動控制 Promise 的fullfiled的時機,所以需要把 resolve 給取出來,然后在我覺得適當?shù)臅r機去執(zhí)行這個 resolve,這樣 Promise 就變fullfiled了。
圖片
但是這樣挺麻煩的,我總是得定義一個額外的變量去存儲這個 resolve。
而Promise.withResolvers他的作用是把 Promise實例、resolve、reject 解構出來供我們使用,還是剛剛的例子,使用Promise.withResolvers。
圖片
Object.groupBy、Map.groupBy
不知道你們有沒有遇到過這樣的類似的需求,比如現(xiàn)在有以下的數(shù)據,我想要按照年齡 age 字段,給這些數(shù)據分個組,那你們會怎么做呢?
圖片
其實可以直接使用 reduce 這個數(shù)組方法去做,就可以實現(xiàn)我們想要的效果