解構(gòu)賦值
在ECMAScript 6允許你這樣寫代碼
const [a, b, c] = [1, 2, 3];
console.log(a, b, c); // 輸出123
const { c } = { c: 3 };
console.log(c); // 輸出3
const [a, [b, c]] = [1, [2, 3]];
console.log(a, b, c); // 輸出123
const [, , c] = [1, 2, 3];
console.log(c); // 輸出3
const [a, ...rest] = [1, 2, 3];
console.log(a, ' ', rest); // 輸出1 [2, 3]
const { c, d } = { c: 3 };
console.log(c, d); // 輸出3 undefined
默認(rèn)值
使用過結(jié)構(gòu)的童鞋應(yīng)該都會(huì)覺得好使派草。最后一例子看出巷挥,如果解構(gòu)不成功(不存在這樣的屬性/位置)旺隙,就會(huì)被賦值為undefined纪岁,這時(shí)候我們可能需要給它個(gè)默認(rèn)值毁欣,以保證安全等。
const [a, b = 2] = [1]; // a=1, b=2
const [a, b = 2] = [1, undefined]; // a=1, b=2
const [a, b = 2] = [1, null]; // a=1, b=null
上面的例子中可以看出缀台,只有當(dāng)結(jié)構(gòu)成員為undefined時(shí)棠赛,默認(rèn)值才會(huì)生效,null不嚴(yán)格等于undefined膛腐,所以為null時(shí)睛约,默認(rèn)值不會(huì)生效的。
這就是我想講的那個(gè)小秘密依疼,寫代碼的時(shí)候一不留聲可能就會(huì)犯這種錯(cuò)誤痰腮。
掌握了解構(gòu)可以靈活運(yùn)用到函數(shù)參數(shù),對(duì)象復(fù)制等各個(gè)地方律罢,這是一個(gè)事半功倍的利器膀值。