解構是es6新增的一種變數賦值方式。
如以前的
var a=1;
var b=2;
var c=3;
//可以用下面解構賦值代替
var [a,b,c]=[1,2,3];
該解構允許巢狀,如下
let [a, [ [ b ] , c ] ]=[ 1,[[2],3]];
允許有預設值
let [,,c]=[1,2,3]; //c===3
let [a, ...b]=[1,2,3,4] //a=1, b=[2,3,4]
let [a,b, ...c]=[1]; //a=1,b=undefined,c=
當等號右邊不是可遍歷結構,會報錯
let [a]=1;
let [a]=false;
let [a]=nan;
let [a]=undefiend;
let [a]=null;
//報錯
事實上,只要右邊的值存在iterator介面,就可以解構
//set解構
let [x,y,z]= new set(['a','b','c']);
//generator函式解構,function*宣告的
function* fibs()
} let [first,second,third,fourth,fifth,sixth]=fibs();
// sixth=5;
解構允許設定預設值
let [a=1]=;
// a=1
let [a,b=2]=[1];
// a=1,b=2
let [a,b=2]=[1,undefined];
// a=1,b=2
let [a=1]=[null]; //a=null
let [a=1]=[undefined] //a=1
只要對應的值不是嚴格等於undefined,預設值就不會生效。
預設值也可以設為函式,但是只有預設值生效才會呼叫函式。
let = //a=1,b=2
要求變數名和屬性名一致,若不一致需如下
let = // c=1,b=2
實際上,左側冒號前者表示匹配模式,右側才是變數名,表示在物件中找到冒號左側的屬性,賦值給右側的變數。
物件解構允許巢狀
let obj=
]};let [p:[x,]]=obj;
// x='hello',y='world'
這裡p是匹配,不是變數,所以p是沒有值的
要是給p賦值,要如下
let [p,p:[x,]]=obj;
字串,數值,布林也可以解構
let [a,b,c,d,e]='hello'
//a='h',b='e',c='l',d='l',e='o'
let ='hello'
//len = 5;
let =123;
s===number.prototype.tostring //true
ES6學習 解構賦值
解構賦值是對賦值運算子的擴充套件,是一種針對陣列或物件進行模式匹配,對其中變數進行賦值。解構源 解構賦值表示式的右邊部分 解構的目標 解構賦值表示式的左邊部分 注意 左右兩邊,結構格式要保持一致 陣列 let arr 1 2,3 let a,b,c arr console.log a,b,c 1 2...
ES6 學習 解構賦值
一 陣列解構 陣列解構,解構出來的值跟陣列下標是一一對應的,如果左邊變數多於右邊陣列,則左邊後面部分變數值為undefined,如果右邊陣列元素個數多於左邊解構變數個數,則左邊變數全都有值,且一一對應 1.簡單解構 let arr 1,2,5 let a b c arr a 1,b 2,c 5 2....
ES6 解構賦值
陣列的解構賦值 let a,b 12,13 let a,b,c d 13,15,16 let a,b c 78,12 23 let x,y 1,3,5 x 1,y 3 let x,y,z a x a,y undefined z let h,b 1,2,3,4 1,2,3,4 預設值 let x tr...