1月30日,TC39將以下特性加入到了ES-2019\
-
JSON ⊂ ECMAScript (JSON superset)
- 行分隔符(U +2018)和段分隔符(U+2019)允許寫在字串文字中,和JSON匹配\
-
更加友好的JSON.stringify(修復了一些超出範圍的unicode展示錯誤的問題)\
- 以前:
JSON.stringify('\uD800') =>'"?"' 複製程式碼
- 現在:
JSONstringify('\uD800') => '\\uD800' JSON.stringify('\uD800') === '\\uD800' => true 複製程式碼
-
Array.sort
- 原來:用的不穩定的quickSort(快排),超過10個元素以上的資料在V8中會不穩定
- 現在:採用了穩定的TimSort演算法,解決了這個問題
-
toString
- 原來:funciton.toString()只返回function關鍵字
- 現在:返回精準字元,包括空格和註釋
function /*test func*/ foo() {} foo.toString()\ 原來返回=> 'function foo(){}' 現在返回=> 'function /*test func*/ foo() {}' 複製程式碼
-
Array新增flat和flatMap方法
- flat:
- 作用:陣列降維,返回一個新陣列,不改變原來陣列
- 接受引數:Number型別,預設為1,根據引數來降低維度層次
const arr = [2,3,[4],[5,[6,[7]]]] arr.flat(1) //=>[2,3,4,5,[6,[7]]] arr.flat(2) // => [2,3,4,5,6,[7]] arr.flat(Infinity) //=>[2,3,4,5,6,7] console.log(arr) // [2,3,[4],[5,[6,[7]]]] 複製程式碼
- flatMap:
- 作用:對資料進行統一變化處理,返回一個新陣列
- 接受引數:func
const arr = [1,2,3] //對每一個元素做處理 arr.glatMap(x => x*2) // [2,4,6] //對一個元素多處理,返回多個對應的值,但是返回必須是陣列,裡面的型別不限制 arr.flatMap(x => [x,x*2] // [1,2,2,4,3,6] arr.flatMap(x=>[{test:x}] // [{test:1},{test:2},{test;3}] //如果返回{}會全部返回undefined arr.flarMap(x => {x:x}) // [undefined,undefined,undefined] 複製程式碼
- flat:
-
Object新增fromEntries方法(和Object.entries互補)
- 作用:把Object.entries轉換後的二維陣列重新轉換為物件
- 接受引數:目標陣列
const obj = {x:3,y:4}
let entries = Object.entries(obj) // [[x,3],[y,4]]
let obj2 = Object.fromEntries(entries) // {x:3,y:4}
複製程式碼
- String新增空格清楚方法trimStart和trimEnd
const str = ' test string '
// trimStart:去除開頭空格
str.trimStart() // 'test string '
// trimEnd:去除結尾空格
str.trimEnd() // ' test string'
// trim:首尾空格都去除
str.trim() // 'test string'
複製程式碼
-
Symbol新增description屬性
- 作用:獲取建立Symbol時寫的備註
const sym = Symbol('this is remark')
// 原來獲取備註方式
String(sym) // 'Symbol(this is remark)'
// 現在
sym.description // 'this is remark'
複製程式碼