解構(gòu)(Destructuring)搬葬。是指在ES6允許按照一定模式,從數(shù)組和對象中提取值素征,對變量進(jìn)行賦值,
在解構(gòu)出現(xiàn)之前為變量賦值,只能直接指定值御毅。
var a=1;
var b=2;
var c=3;
ES6可以寫成這樣
var [a,b,c]=[1,2,3];
這樣表示從[1,2,3]這個數(shù)組中提取值根欧,會按照對應(yīng)的位置翅睛,對變量進(jìn)行賦值贸典。
本質(zhì)上,這種寫法屬于“模式匹配”腻惠,只要等號兩邊的模式相同欺税,左邊的變量就會被賦予對應(yīng)的值侈沪。下面是一些使用嵌套數(shù)組進(jìn)行解構(gòu)的例子。
1.解構(gòu)成功
輸出結(jié)果:
1晚凿,2亭罪,3
輸出結(jié)果:
1
[2,3,4]
這些是解構(gòu)成功的例子,當(dāng)然也有解構(gòu)不成功歼秽。
2.解構(gòu)不成功
解構(gòu)不成功应役,變量的值就等于undefined
輸出結(jié)果:undefined。
3.不完全解構(gòu)
不完全解構(gòu)即等號左邊的模式燥筷,只匹配一部分的等號右邊的數(shù)組箩祥。這種情況下,解構(gòu)依然可以成功肆氓。
輸出結(jié)果:
1袍祖,2
但是如果等號的右邊不是數(shù)組,嚴(yán)格來說不是可遍歷的結(jié)構(gòu)谢揪,那樣也會報錯蕉陋。
let [a] = false;
let [a] = NaN;
let [a] = undefined;
let [a] = null;
let [a] = {};
解構(gòu)賦值不僅適用于let聲明的變量,同樣適用于var拨扶,const聲明的變量凳鬓。