ES6——解構(gòu)賦值

解構(gòu)賦值

解構(gòu)賦值說(shuō)白了就是一種模式匹配,等號(hào)左右兩邊對(duì)應(yīng)變量和值。解構(gòu)賦值可以是完全解構(gòu)賦值,即每個(gè)值與右邊一一對(duì)應(yīng),也可以是不完全解構(gòu)賦值,即只取等號(hào)右邊值的一部分。解構(gòu)賦值可以對(duì)變量取默認(rèn)值。

解構(gòu)賦值取默認(rèn)值的條件是,對(duì)應(yīng)值不全等于undefined,ES6全都是用 === 即全等來(lái)判定是否為對(duì)等

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

數(shù)組的解構(gòu)賦值比較簡(jiǎn)單,即[]兩邊匹配即可

let [x,y] = [1,2] // x =1,y=2
let [z,m=1] = [1] // x = 1,m=1
let [a,[b,c],d] = [1,[2,3],4] // a = 1,b=2,c=3,d=4

對(duì)象的解構(gòu)賦值

對(duì)象的解構(gòu)賦值是有模式的

let {foo,foo:{a},foo:{a:[x,y,z=4]}} = {foo:{a:[1,2]}}
// foo:{a:[1,2,3]}
// a:[1,2,3]
// x=1,y=2,z=4

每個(gè)逗號(hào)都是一個(gè)模式,變量的屬性值必須跟對(duì)象的屬性值相一致,否則無(wú)法成功為 undefined。

對(duì)象的解構(gòu)本質(zhì)上是下面的簡(jiǎn)寫

let {foo:foo,baz:baz} = {foo:1,baz:2}
// foo:1,baz:2

對(duì)于已經(jīng)聲明的變量進(jìn)行賦值解構(gòu),要注意花括號(hào)的方式,系統(tǒng)會(huì)把它當(dāng)作塊級(jí)作用域,所以我們要非匹配模式的部分增加括號(hào)。

let foo
{foo} = {foo:1}
// 報(bào)錯(cuò) Uncaught SyntaxError
let foo 
({foo} = {foo:1})
// foo : 1

數(shù)組本質(zhì)是特殊的對(duì)象,所以可以這樣取值:

let arr = [1, 2, 3];
let {0 : first, [arr.length - 1] : last} = arr;
first // 1
last // 3

字符串的解構(gòu)

在字符串的解構(gòu)過程中,首先會(huì)把字符串轉(zhuǎn)變成數(shù)組,當(dāng)然,會(huì)有一個(gè)length屬性。

數(shù)值和布爾值

賦值解構(gòu)只要等號(hào)右邊不是數(shù)組跟對(duì)象,都會(huì)優(yōu)先轉(zhuǎn)換為對(duì)象

用途

交換變量的值

[x,y] = [y,x]

從函數(shù)返回多個(gè)值

函數(shù)參數(shù)的定義和默認(rèn)值

提取JSON的值

遍歷map解構(gòu)

指定模塊的輸出方法

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

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

  • 解構(gòu) ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值 數(shù)組解構(gòu)賦值 本質(zhì)上這種寫法相當(dāng)于模式匹配如...
    heheheyuanqing閱讀 467評(píng)論 0 0
  • 1.在指定默認(rèn)值時(shí),賦值為<code>null</code>和<code>undefined</code>是不同的...
    請(qǐng)輸入其他名字閱讀 1,940評(píng)論 0 0
  • 基本用法可以從數(shù)組中提取值,按照對(duì)應(yīng)的位置,對(duì)變量賦值 嵌套數(shù)組進(jìn)行結(jié)構(gòu) 不完全解構(gòu)即等號(hào)左邊的模式只匹配一部分等...
    _by_w_z閱讀 327評(píng)論 0 2
  • 解構(gòu)賦值,也稱“模式匹配”,即賦值的左右兩邊模式相同,則等號(hào)右邊的值賦給左邊的變量。 解構(gòu)賦值 適用 let va...
    jingzizi閱讀 3,215評(píng)論 2 0
  • 數(shù)據(jù)庫(kù)中,如果用SQL語(yǔ)言進(jìn)行多個(gè)表的查詢,就需要用到連接操作。這里對(duì)SQL中的連接類型進(jìn)行簡(jiǎn)單的介紹。本文內(nèi)容可...
    SpaceCat閱讀 4,289評(píng)論 1 11

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