解構(gòu)

什么是解構(gòu)液南?

解構(gòu)與構(gòu)造數(shù)據(jù)截然相反。 例如勾徽,它不是構(gòu)造一個新的對象或數(shù)組滑凉,而是逐個拆分現(xiàn)有的對象或數(shù)組,來提取你所需要的數(shù)據(jù)喘帚。可以快速取得數(shù)組或?qū)ο螽?dāng)中的元素或?qū)傩云┪校鵁o需使用arr[x]或者obj[key]等傳統(tǒng)方式進(jìn)行賦值。

ES6使用了一種新模式來匹配你想要提取的數(shù)值, 解構(gòu)賦值就是采用了這種模式啥辨。 該模式會映射出你正在解構(gòu)的數(shù)據(jù)結(jié)構(gòu)涡匀,只有那些與該模式相匹配的數(shù)據(jù),才會被提取出來溉知。

被解構(gòu)的數(shù)據(jù)項位于賦值運(yùn)算符 = 的右側(cè)陨瘩,可以是任何數(shù)組和對象的組合,允許隨意嵌套级乍。用于給這些數(shù)據(jù)賦值的變量個數(shù)不限舌劳。

直白解釋:模式匹配,映射關(guān)系,只要等號兩邊的模式相同,一一對應(yīng),左邊的變量就會被賦予對應(yīng)的值。

對象解構(gòu)

最基本的解構(gòu)

// ES6年代我們都不怎么用var玫荣,用const就感覺很厲害的樣子
const userInfo = {
    name: 'Lily',
    age: '18'
};
// 解構(gòu)開始
const { name, age } = userInfo; // 此處有風(fēng)險甚淡,最好改為 userInfo || {}
console.log(name); // Lily

解構(gòu)并使用別名

有時接口定義的字段往往不是我們想要的,甚至是和我們其他變量存在沖突捅厂,我們該怎么辦呢贯卦?我也很無奈,叫后臺改唄(你可能會被打死??)焙贷!其實(shí)我們在解構(gòu)時也可以設(shè)置別名撵割。

const userInfo = {
    name: 'Lily',
    age: '18'
};
// 解構(gòu)開始
const { name: nickName } = userInfo;// 此處有風(fēng)險,最好改為 userInfo || {}
console.log(nickName);

解構(gòu)嵌套對象

// 后臺返回的數(shù)據(jù)
var userInfo = {
    name: 'Lily',
    age: '18',
    education: {
        degree: 'Masters',
        school: 'SYSU'
    }
};
const { education } = userInfo; // 此處有風(fēng)險辙芍,最好改為 userInfo || {}
const { degree } = education // 此處有風(fēng)險啡彬,后面會說明
console.log(degree); // Masters

上面我們寫了兩行,一層層剝開故硅,明顯繁瑣庶灿,如果這個對象有三四層結(jié)構(gòu)那簡直無法入目。其實(shí)可以用解構(gòu)一步到位的:

// 后臺返回的數(shù)據(jù)
const userInfo = {
    name: 'Lily',
    age: '18',
    education: {
        degree: 'Masters',
        school: 'SYSU'
    }
};
const { education: { degree }} = userInfo;// 此處有風(fēng)險吃衅,后面會說明
console.log(degree); // Masters

沒有外層怎么辦

//會報錯
// 后臺返回的數(shù)據(jù)
const userInfo = {
    name: 'Lily',
    age: '18'
};
const { education: { degree }} = userInfo;// TUncaught TypeError: Cannot destructure property `degree` of 'undefined' or 'null'.

如果你是一個前端老鳥往踢,一定知道其實(shí)我們的對象解構(gòu)也是可以設(shè)置缺省值的。

// 后臺返回的數(shù)據(jù)
const userInfo = {
    name: 'Lily',
    age: '18'
};
const { 
    education: { 
        degree 
    } = {}
} = userInfo || {};
console.log(degree); // undefined

這樣一來我們的解構(gòu)就完美了捐晶,就算后臺掛了菲语,我們也依然堅挺妄辩,雄起!I缴稀眼耀!

參考文章

菜鳥也談js(一)——ES6解構(gòu)對象篇

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佩憾,隨后出現(xiàn)的幾起案子哮伟,更是在濱河造成了極大的恐慌,老刑警劉巖妄帘,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楞黄,死亡現(xiàn)場離奇詭異,居然都是意外死亡抡驼,警方通過查閱死者的電腦和手機(jī)鬼廓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來致盟,“玉大人碎税,你說我怎么就攤上這事×笪” “怎么了雷蹂?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杯道。 經(jīng)常有香客問我匪煌,道長,這世上最難降的妖魔是什么党巾? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任萎庭,我火速辦了婚禮,結(jié)果婚禮上昧港,老公的妹妹穿的比我還像新娘擎椰。我一直安慰自己,他們只是感情好创肥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著值朋,像睡著了一般叹侄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昨登,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天趾代,我揣著相機(jī)與錄音,去河邊找鬼丰辣。 笑死撒强,一個胖子當(dāng)著我的面吹牛禽捆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播飘哨,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼胚想,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芽隆?” 一聲冷哼從身側(cè)響起浊服,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胚吁,沒想到半個月后牙躺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腕扶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年孽拷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片半抱。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡脓恕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出代虾,到底是詐尸還是另有隱情进肯,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布棉磨,位于F島的核電站江掩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乘瓤。R本人自食惡果不足惜环形,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衙傀。 院中可真熱鬧抬吟,春花似錦、人聲如沸统抬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聪建。三九已至钙畔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間金麸,已是汗流浹背擎析。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挥下,地道東北人揍魂。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓桨醋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親现斋。 傳聞我的和親對象是個殘疾皇子喜最,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 前面的話 我們經(jīng)常定義許多對象和數(shù)組,然后有組織地從中提取相關(guān)的信息片段步责。在ES6中添加了可以簡化這種任務(wù)的新特性...
    sunnyghx閱讀 752評論 0 0
  • 前面的話 ??我們經(jīng)常定義許多對象和數(shù)組返顺,然后有組織地從中提取相關(guān)的信息片段。在ES6中添加了可以簡化這種任務(wù)的新...
    CodeMT閱讀 511評論 0 0
  • 引入 在ES5中蔓肯,開發(fā)者們?yōu)榱藦膶ο蠛蛿?shù)組中獲取特定數(shù)據(jù)并賦值給變量遂鹊,編寫了許多看起來同質(zhì)化的代碼 這段代碼從op...
    nengzhuan_zhang閱讀 623評論 0 0
  • 數(shù)組的解構(gòu)賦值 對象的解構(gòu)賦值 字符串的解構(gòu)賦值 數(shù)值和布爾值的解構(gòu)賦值 函數(shù)參數(shù)的解構(gòu)賦值 圓括號問題 用途 數(shù)...
    皇甫貝閱讀 298評論 0 0
  • 也許有很多人會把抑郁和“心情不好”秉扑、“不開心”聯(lián)系起來,但其實(shí)抑郁癥跟感冒發(fā)燒一樣调限,它是一種任何人都有可能得...
    蘇州浪花閱讀 1,106評論 0 50