ES6提供了一種特定語法可以把陣列跟物件中的值取出,並賦值給變數,稱做解構賦值
(Destructuring assignment)。
原本我們要取陣列的值出來會樣寫:
const nums = [1, 2, 3];
const first = nums[0];
const second = nums[1]
但ES6可以這樣寫:
const nums = [1, 2, 3];
const [first, second] = nums;
//first = 1;
//second = 2;
//同等於
let first;
let second;
[first, second]= nums
預設值
變數可以設定預設值,當對應的值為undefined
時,值就會等於預設值。
下面的範例nums
陣列只有兩組數,所以當取值的變數有三個時,第三個third
變數沒有對應的值故為undefined
。
const nums= [1,2];
const [first, second, third=10] = nums
//first = 1;
//second = 2;
//third =10;
忽略元素
若只想取陣列部分值,使用,
忽略不需要取的值即可。
const nums = [1, 2, 3];
const [, , third] = nums;
//third = 3
變數交換
let a = 1;
let b = 2;
let[a,b] = [b,a];
剩餘部分
const nums = [1, 2, 3, 4];
const [first, ...others] = nums;
//first =1
//others //[2, 3, 4]
基本上與陣列一樣,假設有一包物件長這樣:
const point = {
x: 100,
y:150
}
原來物件取值會這樣寫:
const x = point.x;
const y = point.y;
ES6可以這樣寫,與陣列寫法差不多:
const{x , y} = point;
//x = 100;
//y = 150;
//預設值
const{x, y, z=10} = point;
//指派新名稱
const{x:pointX, y:pointY} = point;
//pointX = 100;
//pointY = 150;
function
傳入的參數也可以直接作解構,解構方法與上範例相同:
//function(point){
// const {x, y} = point;
// return Math.sqrt(x * x + y * y);
//}
//直接把解構放在參數裡
function({x, y}){
return Math.sqrt(x*x + y*y);
}
學習完ES6解構賦值,接著字串模板