前端ES6學習日記(2) 解構賦值

2021-09-26 23:13:59 字數 1666 閱讀 8115

解構是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...