第3章 變量的解構(gòu)賦值

  1. 解構(gòu):ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。
  2. 數(shù)組的解構(gòu)賦值:按照位置的對(duì)應(yīng)關(guān)系對(duì)變量賦值。前提:等號(hào)右邊的值是可遍歷的結(jié)構(gòu)

//完全解構(gòu) let [a,b,c]=[1,2,3]; // a=1, b=2, c=3 // 不完全解構(gòu) var [d,[e],f]=[1,[2,3],4]; // d=1, e=2, f=4 //允許指定默認(rèn)值 var [foo="foo"]=[]; // foo="foo" //默認(rèn)值為表達(dá)式時(shí),惰性求值 function f(){ // g能取到值,函數(shù)f不會(huì)執(zhí)行 console.log("我不會(huì)執(zhí)行"); } let [g=f()]=["默認(rèn)值"]; // g="默認(rèn)值" // 默認(rèn)值可以引用解構(gòu)賦值的已經(jīng)聲明的變量 let [h=1,i=h]=[2]; // h=2, i=2

  1. 對(duì)象的解構(gòu)賦值:取與變量同名的屬性的值

//對(duì)象的解構(gòu)賦值 var {foo,bar}={ bar:"aaa" , foo:"bbb" }; // foo="bbb", bar="aaa" //真正被賦值的是后者,不是前者 let {foo:baz}={foo:"aaa",bar:"bbb"}; // foo為模式,baz為變量 console.log(baz); // baz="aaa" console.log(foo); // ReferenceError:foo is not defined

  1. 解構(gòu)賦值的默認(rèn)值生效的條件:對(duì)象的屬性值嚴(yán)格等于undefined;
    如果解構(gòu)失敗,則變量的值為undefined
  2. 解構(gòu)賦值時(shí)在模式中不能使用圓括號(hào)的情況:
    (1). 變量聲明語句中
    (2). 函數(shù)參數(shù)中
    (3). 不能將整個(gè)模式或嵌套模式中的一層放在圓括號(hào)中
  3. 可以使用圓括號(hào)的情況:賦值語句的非模式部分可以使用圓括號(hào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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