1. 程式人生 > >ES6中的陣列解構賦值

ES6中的陣列解構賦值

解構賦值:

解構賦值語法是一個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