ES6中的陣列解構賦值
阿新 • • 發佈:2018-11-08
解構賦值:
解構賦值語法是一個Javascript表示式,這使得可以將資料從陣列或物件提取到不同的變數中(這段話是mdn中關於解構賦值的定義,注意這裡的定義,可以看出解構主要用在陣列和物件上)。
說白了就是解析等號兩邊的結構,然後把右邊的對應賦值給左邊。如果解構不成功
,變數的值就等於undefined
。
一、基本的語法使用
例子1:普通陣列解構賦值
let a,b;
[a,b] = [1,2];
console.log(a,b); // 1 2
例子2:帶擴充套件運算子的陣列解構賦值
let a,b,rest;
[a,b,...rest] = [1,2, 3,4,5,6];
console.log(a,b); // 1 2
console.log(rest); // [3,4,5,6]
例子3:變數有預設值的陣列解構賦值
let a,b,c;
[a,b,c=33] = [1,2];
console.log(a,b,c); // 1 2 33
例子4:變數無預設值且解構不成功
let a,b,c;
[a,b,c] = [1,2];
console.log(a,b,c); // 1 2 undefined
二、陣列解構賦值的使用場景
1、變數交換
let a = 1,
b = 2;
[a,b] = [b,a];
console. log(a,b); // 2 1
2、對函式返回的陣列值,進行對應賦值
//一個計算資料的函式,返回一個已知長度的陣列,陣列中的資料對應不同的含義
function cal(){
//略過函式計算程式碼
return [11,22]; //假設返回11代表人數,22代表總額
}
let man , price;
[man,price] = cal();
console.log(man,price); // 11 22
3、對函式返回陣列,只選擇性的取自己想要的資料
(逗號中無變數,那麼解構的右邊對應的會被忽略掉)
function cal(){
return [ 1,2,3,4,5];
}
let a,b;
[a,,,b] = cal(); //5沒有對應的解構,所以不會賦值
console.log(a,b); // 1 4
4、對於函式返回的未知長度的陣列,只關心取第一項資料
function cal(){
return [1,2,3,4,5];
}
let a,b;
[a,...b] = cal();
console.log(a); // 1