ES6規定,允許按照一定模式從數組和對象中提取值,對變量進行賦值,這種被稱爲解構。
一、 數組的解構賦值
數組的解構賦值是指,左邊是一個數組,右邊也是數組,按照對應的位置對左邊的變量進行賦值。
let [a, [b], c] = [1, [2,3], 4];
//a=1, b=2, c=4
如果結構不成功,變量的值就等於undefined。
let [x, y, ...z]=['a'];
//x='a', y=undefined, c=[]
如果等號右邊的值或轉爲對象以後,不具備Interator接口,或者本身不具備Interator接口,則會報錯。
let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = undefined;
let [a] = null;
let [a] = {};
// 以上都會報錯,前面五個轉爲對象後不具備Interator接口,最後一個本身不具備Interator接口
解構賦值允許指定默認值(備註:變量對應位置的值必須===undefined才能生效):
let [a = true] = [1];
//a=true
let [x, y='b'] = ['a'];
//x='a', y='b'
let[c=true]= [null];
//c=null,以爲c對應位置的值爲null,null!==undefined,故默認值無效
二、對象的解構賦值
變量必須與屬性同名,才能取到對應的值:
let {a, b} = {a:1, b:2};
//a=1, b=2
let {c} = {a:1, b:2};
//c=undefined
參考文章:http://es6.ruanyifeng.com/