ES6之解构赋值

188 阅读1分钟
  • 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}