解构赋值
解构赋值是对赋值运算符的一种扩展。它通常针对数组和对象进行操作。
作用:从一个大数据里提取它其中的一部分
优点:代码书写简洁且易读性高
注意:一般用于数组给数组赋值 对象给对象赋值(两边结构必须一样)
赋值和结构必须同时进行
let {a,b};
{a,b}={a:12,b:13};
这样会直接报错
数组解构
在以前,为变量赋值,只能直接指定值
let a = 1;
let b = 2;
let c = 3;
ES6允许我们这样写:
let [a,b,c] = [1,2,3];
如果解构不成功,变量的值就等于undefined
let [foo] = [];
let [bar, foo] = [1];
foo的值都会等于undefined
结构赋值可以多传少 也可以少传多
数组解构嵌套
let arr=[1,2,[3,4]];
let [a,b,[c,d]]=arr;
在数组中某个数被赋值的如果是数组 也得加[]
对象解构
解构可以用于对象
属性名一定要对应不能改
对象解构赋值和对象的简写不能同时使用
let node = {
type:'identifier',
name:'foo'
}
let {type,name} = node;
用剩余运算符对对象解构
剩余的结果将放入一个对象中
<!--对象的解构赋值时,可以对属性忽略和使用剩余运算符-->
let obj = {
a:{
name:'张三'
},
b:[],
c:'hello world'
}
//可忽略 忽略b,c属性
let {a} = obj;
//剩余运算符 使用此法将其它属性展开到一个对象中存储
let {a,...res} = obj;
console.log(a,res);
打印出来的res { b: [], c: ‘hello world’ }
对象默认值
let {a,b=10}=obj;