欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

淺談目前可以使用ES10的5個(gè)新特性

ECMAScript 2015,也稱(chēng)為ES6,是一個(gè)花了6年時(shí)間完成的主要版本。從那時(shí)起,負(fù)責(zé)ECMAScript標(biāo)準(zhǔn)開(kāi)發(fā)的技術(shù)委員會(huì)39 (TC39)每年都會(huì)發(fā)布該標(biāo)準(zhǔn)的新版本。這個(gè)年度發(fā)布周期簡(jiǎn)化了這個(gè)過(guò)程,并使新特性快速可用,JavaScript社區(qū)對(duì)此表示歡迎。

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出衡陽(yáng)縣免費(fèi)做網(wǎng)站回饋大家。

今年,ECMAScript 2019(簡(jiǎn)稱(chēng)ES2019)將會(huì)發(fā)布。 新功能包括Object.fromEntries(),trimStart(),trimEnd(),flat(),flatMap(),symbol對(duì)象的description屬性,可選的catch綁定等。

好消息是這些功能已經(jīng)在最新版本的Firefox和Chrome中實(shí)現(xiàn),并且它們也可以被轉(zhuǎn)換,以便舊版瀏覽器能夠處理它們。

1. Object.fromEntries()

在JavaScript中,將數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式非常常見(jiàn)。 為了便于將對(duì)象轉(zhuǎn)換為數(shù)組,ES2017引入了Object.entrie()方法。 此方法將對(duì)象作為參數(shù),并以[key,value]的形式返回對(duì)象自己的可枚舉字符串鍵控屬性對(duì)的數(shù)組。 例如:

const obj = {one: 1, two: 2, three: 3};

console.log(Object.entries(obj));  
// => [["one", 1], ["two", 2], ["three", 3]]

但是如果我們想要做相反的事情并將鍵值對(duì)列表轉(zhuǎn)換為對(duì)象呢? 某些編程語(yǔ)言(如Python)為此提供了dict()函數(shù)。 在Underscore.js和Lodash中還有_.fromPairs函數(shù)。

ES2019引入Object.fromEntries()方法為JavaScript帶來(lái)類(lèi)似的功能, 此靜態(tài)方法允許你輕松地將鍵值對(duì)列表轉(zhuǎn)換為對(duì)象:

const myArray = [['one', 1], ['two', 2], ['three', 3]];
const obj = Object.fromEntries(myArray);

console.log(obj);  // => {one: 1, two: 2, three: 3}

如你所見(jiàn),Object.fromEntries()與Object.entries()所做的事情正好相反。 雖然以前可以實(shí)現(xiàn)Object.fromEntries()相同的功能,但它實(shí)現(xiàn)方式有些復(fù)雜:

const myArray = [['one', 1], ['two', 2], ['three', 3]];
const Array.from(myArray).reduce((acc, [key, val]) 
=> Object.assign(acc, {[key]: val}), {})

console.log(obj);  // => {one: 1, two: 2, three: 3}

請(qǐng)記住,傳遞給Object.fromEntries()的參數(shù)可以是實(shí)現(xiàn)可迭代協(xié)議的任何對(duì)象,只要它返回一個(gè)兩元素,類(lèi)似于數(shù)組的對(duì)象即可。

例如,在以下代碼中,Object.fromEntries() 將Map對(duì)象作為參數(shù),并創(chuàng)建一個(gè)新對(duì)象,其鍵和對(duì)應(yīng)值由Map中的對(duì)給出:

const map = new Map();
map.set('one', 1);
map.set('two', 2);

const obj = Object.fromEntries(map);

console.log(obj);  // => {one: 1, two: 2}

Object.fromEntries() 方法對(duì)于轉(zhuǎn)換對(duì)象也非常有用,思考以下代碼:

const obj = {a: 4, b: 9, c: 16};

// 將對(duì)象轉(zhuǎn)換為數(shù)組
const arr = Object.entries(obj);

// 計(jì)算數(shù)字的平方根
const map = arr.map(([key, val]) => [key, Math.sqrt(val)]);

// 將數(shù)組轉(zhuǎn)換回對(duì)象
const obj2 = Object.fromEntries(map);

console.log(obj2); // => {a: 2, b: 3, c: 4}

上述代碼將對(duì)象中的值轉(zhuǎn)換為其平方根。 為此,它首先將對(duì)象轉(zhuǎn)換為數(shù)組,然后使用map()方法獲取數(shù)組中值的平方根,結(jié)果是可以轉(zhuǎn)換回對(duì)象的數(shù)組。

使用Object.fromEntries()的另一種情況是處理URL的查詢(xún)字符串,如本例所示

const paramsString = 'param1=foo&param2=baz';
const searchParams = new URLSearchParams(paramsString);

Object.fromEntries(searchParams);  // => {param1: "foo", param2: "baz"}

此代碼中,查詢(xún)字符串將傳遞給 URLSearchParams()構(gòu)造函數(shù)。 然后將返回值(即URLSearchParams對(duì)象實(shí)例)傳遞給Object.fromEntries() 方法,結(jié)果是一個(gè)包含每個(gè)參數(shù)作為屬性的對(duì)象。

Object.fromEntries() 方法目前是第4階段提案,這意味著它已準(zhǔn)備好包含在ES2019標(biāo)準(zhǔn)中。

2. trimStart() and trimEnd()

trimStart()和trimEnd()方法在實(shí)現(xiàn)與trimLeft()和trimRight()相同。這些方法目前處于第4階段,將被添加到規(guī)范中,以便與padStart()和padEnd()保持一致,來(lái)看一些例子:

const str = "  string  ";

// es2019
console.log(str.trimStart());  // => "string  "
console.log(str.trimEnd());   // => "  string"

// 相同結(jié)果
console.log(str.trimLeft());   // => "string  "
console.log(str.trimRight());  // => "  string"

對(duì)于Web兼容性,trimLeft() 和trimRight() 將保留為trimStart() 和trimEnd() 的別名。

3. flat() and flatMap()

flat() 方法可以將多維數(shù)組展平成一維數(shù)組

const arr = ['a', 'b', ['c', 'd']];
const flattened = arr.flat();

console.log(flattened);  // => ["a", "b", "c", "d"]

以前,我們經(jīng)常使用reduce()或concat()來(lái)展平多維數(shù)組:

const arr = ['a', 'b', ['c', 'd']];
const flattend = [].concat.apply([], arr);

// or
// const flattened = [].concat(...arr);

console.log(flattened);  // => ["a", "b", "c", "d"]

請(qǐng)注意,如果提供的數(shù)組中有空值,它們會(huì)被丟棄:

const arr = ['a', , , 'b', ['c', 'd']];
const flattened = arr.flat();

console.log(flattened);  // => ["a", "b", "c", "d"]

flat() 還接受一個(gè)可選參數(shù),該參數(shù)指定嵌套數(shù)組應(yīng)該被展平的級(jí)別數(shù)。 如果未提供參數(shù),則將使用默認(rèn)值1:

const arr = [10, [20, [30]]];

console.log(arr.flat());   // => [10, 20, [30]]
console.log(arr.flat(1));  // => [10, 20, [30]]
console.log(arr.flat(2));  // => [10, 20, 30]

flatMap() 方法將map()和flat()組合成一個(gè)方法。 它首先使用提供的函數(shù)的返回值創(chuàng)建一個(gè)新數(shù)組,然后連接該數(shù)組的所有子數(shù)組元素。 來(lái)個(gè)例子:

const arr = [4.25, 19.99, 25.5];

console.log(arr.map(value => [Math.round(value)]));  
// => [[4], [20], [26]]

console.log(arr.flatMap(value => [Math.round(value)]));  
// => [4, 20, 26]

數(shù)組將被展平的深度級(jí)別為1.如果要從結(jié)果中刪除項(xiàng)目,只需返回一個(gè)空數(shù)組:

const arr = [[7.1], [8.1], [9.1], [10.1], [11.1]];

// do not include items bigger than 9
arr.flatMap(value => {
 if (value >= 10) {
  return [];
 } else {
  return Math.round(value);
 }
}); 

// returns:
// => [7, 8, 9]

除了正在處理的當(dāng)前元素外,回調(diào)函數(shù)還將接收元素的索引和對(duì)數(shù)組本身的引用。flat()和flatMap()方法目前處于第4階段。

4.Symbol 對(duì)象的 description 屬性

在創(chuàng)建Symbol時(shí),可以為調(diào)試目的向其添加description (描述)。有時(shí)候,能夠直接訪問(wèn)代碼中的description 是很有用的。

ES2019 中為Symbol對(duì)象添加了只讀屬性 description ,該對(duì)象返回包含Symbol描述的字符串。

let sym = Symbol('foo');
console.log(sym.description);  // => foo

sym = Symbol();
console.log(sym.description);  // => undefined

// create a global symbol
sym = Symbol.for('bar');
console.log(sym.description);  // => bar

5.可選的 catch

try catch 語(yǔ)句中的catch有時(shí)候并沒(méi)有用,思考下面代碼:

try {
 // 使用瀏覽器可能尚未實(shí)現(xiàn)的功能
} catch (unused) {
 // 這里回調(diào)函數(shù)中已經(jīng)幫我們處理好的錯(cuò)誤
}

此代碼中的catch回調(diào)的信息并沒(méi)有用處。 但這樣寫(xiě)是為了避免SyntaxError錯(cuò)誤。 ES2019可以省略catch周?chē)睦ㄌ?hào):

try {
 // ...
} catch {
 // ....
}

另外:ES2020 的 String.prototype.matchAll

matchAll() 方法是ES2020 第4階段提議,它針對(duì)正則表達(dá)式返回所有匹配(包括捕獲組)的迭代器對(duì)象。

為了與match()方法保持一致,TC39 選擇了“matchAll”而不是其他建議的名稱(chēng),例如 “matches” 或 Ruby的 “scan”??磦€(gè)簡(jiǎn)單的例子:

const re = /(Dr\. )\w+/g;
const str = 'Dr. Smith and Dr. Anderson';
const matches = str.matchAll(re);

for (const match of matches) {
 console.log(match);
}

// logs:
// => ["Dr. Smith", "Dr. ", index: 0, input: "Dr. Smith and Dr. Anderson", groups: undefined]
// => ["Dr. Anderson", "Dr. ", index: 14, input: "Dr. Smith and Dr. Anderson", groups: undefined]

此正則表達(dá)式中的捕獲組匹配字符“Dr”,后跟一個(gè)點(diǎn)和一個(gè)空格。\w+ 匹配任何單詞字符一次或多次。 并且g標(biāo)志指示引擎在整個(gè)字符串中搜索模式。

之前,必須在循環(huán)中使用exec()方法來(lái)實(shí)現(xiàn)相同的結(jié)果,這不是非常有效:

const re = /(Dr\.) \w+/g;
const str = 'Dr. Smith and Dr. Anderson';
let matches;

while ((matches = re.exec(str)) !== null) {
 console.log(matches);
}

// logs:
// => ["Dr. Smith", "Dr.", index: 0, input: "Dr. Smith and Dr. Anderson", groups: undefined]
// => ["Dr. Anderson", "Dr.", index: 14, input: "Dr. Smith and Dr. Anderson", groups: undefined]

重要的是要注意盡管match() 方法可以與全局標(biāo)志g一起使用來(lái)訪問(wèn)所有匹配,但它不提供匹配的捕獲組或索引位置。 比較以下代碼:

const re = /page (\d+)/g;
const str = 'page 2 and page 10';

console.log(str.match(re));  
// => ["page 2", "page 10"]

console.log(...str.matchAll(re)); 
// => ["page 2", "2", index: 0, input: "page 2 and page 10", groups: undefined] 
// => ["page 10", "10", index: 11, input: "page 2 and page 10", groups: undefined]

總結(jié)

在這篇文章中,我們仔細(xì)研究了 ES2019 中引入的幾個(gè)關(guān)鍵特性,包括Object.fromEntries(),trimStart(), trimEnd(), flat(), flatMap(),symbol 對(duì)象的description 屬性以及可選的catch 。

盡管一些瀏覽器還沒(méi)有完全實(shí)現(xiàn)這些特性,但可以使用Babel和其他JavaScript轉(zhuǎn)換器,仍然可以在項(xiàng)目中使用它們。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享題目:淺談目前可以使用ES10的5個(gè)新特性
分享地址:http://aaarwkj.com/article16/jjhggg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站維護(hù)、定制網(wǎng)站、App開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
日韩欧美国产精品专区| 日韩精品在线观看大全套| 国产实拍之强伦奸在线观看| 在线观看高清免费国产| 韩国三级福利在线观看| 亚洲精品国产精品成人 | 少妇太爽高潮在线播放| 久久精品一区二区熟女| 国产精品偷伦一区二区| 亚洲国产成人av精品精品国产自| 成人欧美黑人一区二区| 少妇一区二区三区免费| 青青草原激情综合网| 夫妻晚上同房太猛视频| 日本亚洲中文字幕网站| 18禁在线免费观看网站| 97超频在线观看免费| 丰满少妇在线观看网站| 国产亚洲欧美日韩各类| 国产三级精品三级在线播放| 丰满少妇在线观看网站| 国产精品精品国产一区二区 | 尹人大香蕉在线视频| 国产91日韩欧美在线观看| 国产精品一区二区三区播放| 中文字幕av免费专区| 国产一区二区精品不卡| 熟女一区二区中文字幕| 日韩欧美中文字幕综合网| 最近更新中文字幕不卡在线| 日韩三级av在线免费观看| 18禁黄久久久一区二区三区| 国产亚洲男人av一区三区 | 国产精品一区二区国产激情久久| 国产欧美日本一区二区| 最新国产激情福利网站| 高潮少妇水多毛多av| 国产麻豆91在线视频| 精品视频一区二区三区在线观看 | 色偷偷亚洲精品一区二区| av国产一区二区在线|