ES6之解構賦值

田小菜發表於2019-05-05
  • ES6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(Destructuring)。

一,陣列解構

  • 事實上,只要某種資料結構具有 Iterator 介面,都可以採用陣列形式的解構賦值。
  1. 陣列解構
let [a,b,b] = [1,2,3];
// a = 1; b = 2; c = 3
複製程式碼
  1. 預設值解構
let [a, b = true] = ['珺','test' ];
// a = '珺';b = 'test'
複製程式碼

二,物件的解構賦值

  1. 物件解構
let obj = {
    a: 18,
    b: 'test'
}
let {a, b} = obj;
// a=18, b='test'
複製程式碼
  1. 注意點
let x;
{x} = {x: 18} // 報錯
({x} = {x: 18}) // 這種ok
=========
let arr = [2,3,4];
let {0: aa, length: ll} = arr;
// aa = 2
// ll = 3
複製程式碼
  1. 函式引數的解構賦值
// 基本用法
function fn(a = 1, b = 2){
    console.log(a,b);
}
fn() // 1,2
fn(3) // 3,2
fn(3,4) // 3,4
=======
 // 注意:引數是一個物件,通過對這個物件進行解構,得到變數a和b的值
 // 下面是為變數a和b指定預設值
function ff({a = 1,b = 2} = {}){
    console.log(a,b)
}
ff() // 1,2
ff({}) // 1,2
ff({a: 3, b: 4}) // 3,4
ff({a: 18}) //18, 2
ff({b: 16}) // 1,16

// 下面是為引數指定預設值
function ff({a,b} = {a: 1, b: 2}){
    console.log(a,b)
}
ff() // 1,2  {a,b} = {a: 1, b: 2}
ff({}) // undefined undefined  {a,b} = {}
ff({a: 3, b: 4}) // 3,4  {a,b} = {a: 3, b: 4}
ff({a: 18}) //18 undefined {a,b} = {a: 18}
ff({b: 16}) // undefined 16 {a,b} = { b: 16}
複製程式碼

相關文章