iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0
自我挑戰組

從0開始vue.js的30天學習日誌系列 第 15

15 JavaScript ES6 - 解構賦值

  • 分享至 

  • xImage
  •  

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解構賦值,接著字串模板/images/emoticon/emoticon13.gif


上一篇
14 JavaScript ES6 - 物件縮寫object shorthand
下一篇
16 JavaScript ES6 - 字串模板
系列文
從0開始vue.js的30天學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言