ES2019(ES10)

一、JSON superset

將ECMA-262語法擴展為JSON超集

動機

  • ECMAScript聲稱JSON是一個子集JSON.parse,但是(因為已經(jīng)有詳細(xì)記錄)這是不正確的,因為JSON字符串可以包含未轉(zhuǎn)義的U + 2028 LINE SEPARATOR和U + 2029 PARAGRAPH SEPARATOR字符,而ECMAScript字符串則不能

二、Optional catch binding

對ECMAScript進(jìn)行了語法更改,允許catch中不寫error捕獲

動機

  • 此提議引入的語法更改允許catch省略綁定其周圍的括號
    原寫法
try {
  // 嘗試使用可能無法實現(xiàn)的Web功能
} catch (unused) {
  // 支持可能無法實現(xiàn)的web功能情況
}

以后可以這樣寫

try {
  // do something
} catch {
  //
}

三、Symbol.prototype.description

新增一個Symbol.prototype.description方法,是一個只讀屬性,它會返回 Symbol 對象的可選描述的字符串

demo

console.log(Symbol('desc').description); // expected output: "desc"

console.log(Symbol.iterator.description); // expected output: "Symbol.iterator"

console.log(Symbol.for('foo').description); // expected output: "foo"

console.log(Symbol('foo').description + 'bar'); // expected output: "foobar"

四、Function.prototype.toString revision

新增一個Function.prototype.toString方法,返回一個表示當(dāng)前函數(shù)源代碼的字符串

1.語法

function.toString()

2.demo

const fun = (name) => { console.log(name) }
fun.toString() // "(name) => { console.log(name) }"

五、Object.fromEntries ———— 用于將鍵值對列表轉(zhuǎn)換為對象(兼容性有點差,chrome最新的beta版才支持)。

新增Object.fromEntries屬性,用于將鍵值對列表轉(zhuǎn)換為對象
1.語法

const newObject = Object.fromEntries(iterable);

iterable: 類似實現(xiàn)了可迭代協(xié)議 Array 或者 Map 或者其它對象的可迭代對象

2.demo

const newObject = Object.fromEntries([['a', 1], ['b', 2]]); // { a: 1, b: 2 }
const map = new Map().set('a', 1).set('b', 2);
const newObject1 = Object.fromEntries(map); // { a: 1, b: 2 }

六、Well-formed JSON.stringify

防止JSON.stringify返回格式錯誤的Unicode字符串的提議

七、String.prototype.{trimStart,trimEnd}

新增String.prototype.trimStart和String.prototype.trimEnd屬性,移除空白字符,并返回一個新字符串

String.prototype.trimStart

從一個字符串的開端刪除空白字段,并返回一個新字符串
1.語法

str.trimStart();

2.demo

const str = '   我愿是豬    ';
const newStr = str.trimStart(); // '我愿是豬    '

String.prototype.trimEnd

從一個字符串的末端刪除空白字段,并返回一個新字符串
1.語法

str.trimEnd();

2.demo

const str = '   我愿是豬    ';
const newStr = str.trimEnd(); // '   我愿是豬'

八、Array.prototype.{flat,flatMap}

新增Array.prototype.flat和Array.prototype.flatMap屬性,對數(shù)組的內(nèi)含數(shù)組進(jìn)行展開操作并返回一個新數(shù)組

Array.prototype.flat

!參考資料
方法會按照一個可指定的深度遞歸遍歷數(shù)組,并將所有元素與遍歷到的子數(shù)組中的元素合并為一個新數(shù)組返回

1.語法

const newArray = arr.flat(depth)

depth: 需要展開內(nèi)層數(shù)組的層數(shù),默認(rèn)為1

2.demo

  • 展開內(nèi)層數(shù)組
/** 默認(rèn)參數(shù): */
const array = [1, [2, [3]]];
const array1 = array.flat(); // [1, 2, [3]]
/** 遞歸展平,直到數(shù)組不再包含嵌套數(shù)組: */
const arrayInfinity = array.flat(Infinity); // [1, 2, 3]
/** 此處等同于 */
const array2 = array.flat(2);
  • 移除空項
const array = [1, 2, , 3];
const arrayRemove = array.flat(); // [1, 2, 3]

Array.prototype.flatMap

方法類似與Array.prototype.map,但是會展開數(shù)組(只會展開一層)

1.語法

const new_array = arr.flatMap((currentValue, index, array) => {
    // 返回新數(shù)組的元素
})

currentValue: 數(shù)組中正在處理的當(dāng)前元素
index: 正在處理元素的索引
array: 正在被處理素組

2.demo

const array = [1, 2, 3];
const new_array = array.flatMap(ele => [ele * 2]) // [2, 4, 6]
const new_array2 = array.flatMap(ele => [[ele * 2]]) // [[2], [4], [6]]

gitub上修改

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,689評論 0 4
  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,877評論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,856評論 1 45
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,221評論 0 1
  • 中午的春困,揉得眼睛有幾分睡意,來電顯示是個陌生的電話,第一個認(rèn)為打錯的沒去接聽,第二個還是接了,出于禮貌我應(yīng)了聲...
    千尋尛閱讀 348評論 2 2

友情鏈接更多精彩內(nèi)容