天天看點

ES6特性之:解構

解構(destructuring assignment), 也稱解構指派,這種文法可以友善的将數組元素或對象屬性賦成新的變量。

我們假設一個代碼場景,我們用一個數組或對象包含2個元素,來代表一個坐标軸的坐标值:

//使用數組
var coords1 = [10, 20]; // x軸10, y軸20

//使用對象
var coords2 = {x: 50, y: 100}; // x軸50, y軸100
           

然後,我們要将這兩個坐标值單獨拿出來指派成2個變量,通常會這麼做:

var x1 = coords1[0];
var y1 = coords2[1];

var x2 = coords2.x;
var y2 = coords2.y;
           

是的,以前我們就是這麼做的!而現在有了解構指派文法,我們可以更加簡單一些了,下面的示例代碼和上面的效果是完全等價的:

var [x1, y1] = coords1;
var {x2, y2} = coords2;
           

在解構指派的時候,也可以給變量設定預設值:

var [x=100, y=100] = [10];
//x=10, y=100
           

在解構數組的時候,有些值不想要,可以這樣做:

var [x,,y]=[10, "hello", 20];
           

也可以在解構指派的時候,使用Rest文法:

var [a, ...b] = [1, 2, 3, 4, 5];
//a=1
//b=[2, 3, 4, 5]
           

在解構對象的時候,你想賦成和對象屬性名不一樣的變量名,你可以這麼做:

var {a:x, b:y} = { a: 1, b: 2 }
//x=1
//y=2
           

解構指派也可以用在函數參數清單上:

function test({x, y}) {
  return x + y;
}

var obj = {x: 1, y: 5};
test(obj)
           

繼續閱讀