- ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
一,数组解构
- 事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。
- 数组解构
let [a,b,b] = [1,2,3];// a = 1; b = 2; c = 3复制代码
- 默认值解构
let [a, b = true] = ['珺','test' ];// a = '珺';b = 'test'复制代码
二,对象的解构赋值
- 对象解构
let obj = { a: 18, b: 'test'}let {a, b} = obj;// a=18, b='test'复制代码
- 注意点
let x;{x} = { x: 18} // 报错({x} = { x: 18}) // 这种ok=========let arr = [2,3,4];let { 0: aa, length: ll} = arr;// aa = 2// ll = 3复制代码
- 函数参数的解构赋值
// 基本用法function fn(a = 1, b = 2){ console.log(a,b);}fn() // 1,2fn(3) // 3,2fn(3,4) // 3,4======= // 注意:参数是一个对象,通过对这个对象进行解构,得到变量a和b的值 // 下面是为变量a和b指定默认值function ff({a = 1,b = 2} = {}){ console.log(a,b)}ff() // 1,2ff({}) // 1,2ff({ a: 3, b: 4}) // 3,4ff({ a: 18}) //18, 2ff({ 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}复制代码