ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值
1、对象解构:对象解构时对象的属性没有次序,变量必须与属性同名,才能取到正确的值
2、数组解构:数组解构时数组的元素是按次序排列的,变量的取值由它的位置决定
对象解构
//这里是完整写法,变量与属性同名,也就是解构的key和数据的属性名同名
let { lyc: a, fyy: d } = { lyc: '很帅', fyy: '很美' }
console.log(a, d); //a就是很帅,d就是很美
注意:数据lyc的值'很帅'是赋值给a
//不过一般直接在解构时使用对象简写,就是key:value一致时,我们会省略value
let { lyc, fyy } = { lyc: '很帅', fyy: '很美' }
console.log(lyc, fyy);
//不适用解构
let obj = { lyc: '很帅', fyy: '很美' }
console.log(obj.lyc);
//对象解构小技巧
//平时我们需要写完整的console.log去打印数据,但是用上了解构赋值,
//就可以把console里的log解构出来,就可以直接使用
let { log } = console
log('你好')
数组解构
const arr = ['倒带', '借口', '暗号'];
let [a, b, c, d] = arr;
console.log(a); //倒带
console.log(b); //借口
console.log(c); //暗号
console.log(d); //undefined
//解构可以写默认值,但是只有像上面的情况出现undefined,才会使用默认值
//当然对象解构也可以使用解构默认值
//这里给d加上默认值
let [a,b,c,d='1'] = arr;
console.log(d); //1
//可以交换变量
let x = 1;
let y = 2;
[x,y] = [y,x] //注意:这里=后面的[y,x]其实是[2,1]是数组数据,=前面的是解构
console.log(x,y); //2,1
//数组的解构,=的右边数据必须是数组(或者严格地说,不是可遍历的结构)不然就会报错
[m,n] = {5,6} //报错