亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

[譯]JavaScript ES6解構(gòu)賦值指南

Jeff / 3277人閱讀

摘要:解構(gòu)賦值允許我們將右邊的表達(dá)式看起來(lái)也像變量聲明一般,然后在左邊將值一一提取。數(shù)組的解構(gòu)賦值現(xiàn)在假設(shè)我們有一個(gè)變量,其值為。通過(guò),這會(huì)看上去更清晰簡(jiǎn)潔最后的解構(gòu)賦值給的語(yǔ)法帶來(lái)了更多的現(xiàn)代化。

前言

讓我們來(lái)仔細(xì)地看看ES6所帶來(lái)的更清晰的變量聲明與賦值語(yǔ)法。現(xiàn)今的變量聲明語(yǔ)法十分的直接:左邊是一個(gè)變量名,右邊可以是一個(gè)數(shù)組:[]的表達(dá)式或一個(gè)對(duì)象:{}的表達(dá)式,等等。解構(gòu)賦值允許我們將右邊的表達(dá)式看起來(lái)也像變量聲明一般,然后在左邊將值一一提取。聽(tīng)起來(lái)有點(diǎn)迷糊?讓我們一起看看下面的例子就好。

數(shù)組的解構(gòu)賦值

現(xiàn)在假設(shè)我們有一個(gè)value變量,其值為[1, 2, 3, 4, 5]。然后我們想給數(shù)組的前三個(gè)元素分別聲明一個(gè)變量。傳統(tǒng)的做法是多帶帶聲明和賦值每一個(gè)變量:

jsvar value = [1, 2, 3, 4, 5];
var el1 = value[0];
var el2 = value[1];
var el3 = value[0];

有了這幾個(gè)新變量,我們?cè)镜?b>value現(xiàn)在可以被表示為[el1, el2, el3, 4, 5],因?yàn)槲覀儸F(xiàn)在并不關(guān)心后兩個(gè)元素,所以也可以說(shuō)被表示為[el1, el2, el3]。那么現(xiàn)在,ES6允許我們?cè)谧筮吺褂眠@個(gè)表達(dá)式來(lái)達(dá)到和上一個(gè)代碼塊一樣的效果:

jsvar value = [1, 2, 3, 4, 5];
var [el1, el2, el3] = value;

右邊不必一定是變量名:

jsvar [el1, el2, el3] = [1, 2, 3, 4, 5];

左邊也不必一定是聲明:

jsvar el1, el2, el3;
[el1, el2, el3] = [1, 2, 3, 4, 5];

這使我們通過(guò)僅僅使用兩個(gè)變量名,就可以交換兩個(gè)變量的值,這是從前的JavaScript不可能辦到的事情:

js[el1, el2] = [el2, el1];

解構(gòu)賦值也是可嵌套的:

jsvar value = [1, 2, [3, 4, 5]];
var [el1, el2, [el3, el4]] = value;

ES6中,返回一個(gè)數(shù)組的函數(shù)更像一個(gè)頭等公民了:

jsfunction tuple() {
  return [1, 2];
}

var [first, second] = tuple();

同樣可以通過(guò)簡(jiǎn)單地在指定位置省略變量來(lái)忽略數(shù)組中的某個(gè)元素:

jsvar value = [1, 2, 3, 4, 5];
var [el1, , el3, , el5] = value;

這使得從正則表達(dá)式里取出匹配的分組的過(guò)程十分得簡(jiǎn)潔:

jsvar [, firstName, lastName] = "John Doe".match(/^(w+) (w+)$/);

更進(jìn)一步,默認(rèn)值同樣也可以被指定:

jsvar [firstName = "John", lastName = "Doe"] = [];

需要注意的是默認(rèn)值只會(huì)在對(duì)undefined值起作用,下面的例子中firstNamelastName都將是null

jsvar [firstName = "John", lastName = "Doe"] = [null, null];

rest參數(shù)(...變量名)讓事情變得更有趣,它使你可以得到數(shù)組中“剩余“的元素。下面這個(gè)例子中,tail變量將接收數(shù)組中”剩余“的元素,為[4, 5]:

jsvar value = [1, 2, 3, 4, 5];
var [el1, el2, el3, ...tail] = value;

不幸的是,ES6中rest參數(shù)的實(shí)現(xiàn)非常原始,rest參數(shù)之后不能再有其他參數(shù)(即只能是最后一個(gè)參數(shù))。所以下面例子中的這些非常有用模式,在ES6中是不可能的(會(huì)報(bào)錯(cuò)):

jsvar value = [1, 2, 3, 4, 5];
var [...rest, lastElement] = value;
var [firstElement, ...rest, lastElement] = value;
對(duì)象的解構(gòu)賦值

現(xiàn)在,你已經(jīng)對(duì)數(shù)組的解構(gòu)賦值有了清晰的認(rèn)識(shí),讓我們來(lái)看看對(duì)象的解構(gòu)賦值。它們幾乎以同樣的方式工作,僅僅是從數(shù)組變成了對(duì)象:

jsvar person = {firstName: "John", lastName: "Doe"};
var {firstName, lastName} = person;

ES6允許變量名與對(duì)應(yīng)的屬性名不一致。下面的例子中,name變量將會(huì)被聲明為person.firstName的值:

jsvar person = {firstName: "John", lastName: "Doe"};
var {firstName: name, lastName} = person;

深層嵌套的對(duì)象也不會(huì)有問(wèn)題:

jsvar person = {name: {firstName: "John", lastName: "Doe"}};
var {name: {firstName, lastName}} = person;

你還可以嵌套些數(shù)組在里面:

jsvar person = {dateOfBirth: [1, 1, 1980]};
var {dateOfBirth: [day, month, year]} = person;

或者一些其他的:

jsvar person = [{dateOfBirth: [1, 1, 1980]}];
var [{dateOfBirth}] = person;

和數(shù)組解構(gòu)賦值一樣,對(duì)象解構(gòu)賦值也可以使用默認(rèn)值:

jsvar {firstName = "John", lastName: userLastName = "Doe"} = {};

默認(rèn)值同樣也只會(huì)在對(duì)undefined值起作用,下面的例子中firstNamelastName也都將是null

jsvar {firstName = "John", lastName = "Doe"} = {firstName: null, lastName: null};
函數(shù)參數(shù)的解構(gòu)賦值

ES6中,函數(shù)的參數(shù)也支持解構(gòu)賦值。這對(duì)于有復(fù)雜配置參數(shù)的函數(shù)十分有用。你可以結(jié)合使用數(shù)組和對(duì)象的解構(gòu)賦值。

jsfunction findUser(userId, options) {
  if (options.includeProfile) ...
  if (options.includeHistory) ...
}

通過(guò)ES6,這會(huì)看上去更清晰簡(jiǎn)潔:

jsfunction findUser(userId, {includeProfile, includeHistory}) {
  if (includeProfile) ...
  if (includeHistory) ...
}
最后

ES6的解構(gòu)賦值給JavaScript的語(yǔ)法帶來(lái)了更多的現(xiàn)代化。它在減少了代碼量的同時(shí),增加了代碼的可讀性和表現(xiàn)力。

原文地址

https://strongloop.com/strongblog/getting-started-with-javascript-es6-...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/85757.html

相關(guān)文章

  • []JavaScript ES6迭代器指南

    摘要:前言又稱(chēng)提供一個(gè)全新的迭代器的概念,它允許我們?cè)谡Z(yǔ)言層面上定義一個(gè)有限或無(wú)限的序列。后者可以被用來(lái)幫助我們理解迭代器。但是當(dāng)我們使用迭代器時(shí),這個(gè)問(wèn)題就迎刃而解了。是中的新語(yǔ)法,用來(lái)配合迭代器。這是因?yàn)閿?shù)組的迭代器只返回其中預(yù)期的元素。 前言 EcmaScript 2015 (又稱(chēng)ES6)提供一個(gè)全新的迭代器的概念,它允許我們?cè)谡Z(yǔ)言層面上定義一個(gè)(有限或無(wú)限的)序列。 暫時(shí)先拋開(kāi)它...

    daryl 評(píng)論0 收藏0
  • [] 最深刻而易懂的ES6解構(gòu)教程

    摘要:被解構(gòu)的數(shù)據(jù)項(xiàng)位于賦值運(yùn)算符的右側(cè),可以是任何數(shù)組和對(duì)象的組合,允許隨意嵌套。數(shù)組模式位于賦值運(yùn)算符的左側(cè),被結(jié)構(gòu)的數(shù)組在其右側(cè)。 解構(gòu)是ES6的新特性,用于從JavaScript對(duì)象和數(shù)組中提取數(shù)據(jù),語(yǔ)法上比ES5所提供的更加簡(jiǎn)潔、緊湊、清晰。它不僅能減少你的代碼量,還能從根本上改變你的編碼方式。用的越多,你就會(huì)發(fā)現(xiàn)越多塑造數(shù)據(jù)和函數(shù)的方式,這些實(shí)現(xiàn)方式在過(guò)去幾乎是不可能的。本文將深...

    AlphaGooo 評(píng)論0 收藏0
  • [] 在你學(xué)習(xí) React 之前必備的 JavaScript 基礎(chǔ)

    摘要:前言在理想的狀態(tài)下,你可以在深入了解之前了解和開(kāi)發(fā)的所有知識(shí)。繼承另一個(gè)類(lèi)的類(lèi),通常稱(chēng)為類(lèi)或類(lèi),而正在擴(kuò)展的類(lèi)稱(chēng)為類(lèi)或類(lèi)。這種類(lèi)型的組件稱(chēng)為無(wú)狀態(tài)功能組件。在你有足夠的信心構(gòu)建用戶界面之后,最好學(xué)習(xí)。 原文地址:JavaScript Basics Before You Learn React 原文作者: Nathan Sebhastian 寫(xiě)在前面 為了不浪費(fèi)大家的寶貴時(shí)間,在開(kāi)...

    Chaz 評(píng)論0 收藏0
  • [] ES6 中 Arguments 和 Parameters 用法解析

    摘要:默認(rèn)參數(shù)有了我們不需要再去檢測(cè)哪些值為并且給它們?cè)O(shè)定默認(rèn)值了。我們甚至可以使用函數(shù)去找回默認(rèn)參數(shù)的值注意這個(gè)函數(shù)只有在第二個(gè)參數(shù)省略時(shí)才會(huì)被調(diào)用。瀏覽器對(duì)默認(rèn)參數(shù)的支持情況桌面瀏覽器移動(dòng)端瀏覽器解構(gòu)賦值解構(gòu)賦值是的新特性。 原文地址:https://www.smashingmagazine.com/2016/07/how-to-use-arguments-and-parameters...

    msup 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<