解构的做用:简化书写长度,提高开发效率。es6
解构对象ajax
在开发中咱们经常使用到使用ajax请求数据,而且把数据渲染到页面上。可能这个数据返回的对象或数组。例如返回一个obj{name:'zwq',age:18,sex:woman}而咱们获取里面的值保存在变量里会用 var name = obj.name,var age = obj.age。数组
在es6中提供了解构的语法糖,让左右两侧极为类似的结构进行变量赋值。spa
在对象中单独写一个name表明的就是 name:name,左侧name你要到对象对象找到的属性,右侧name表明你声明的变量名,因此,下面代码中obj对象的name,age属性赋值给变量name和age。在左侧的变量找到了右侧对象的相同属性并把值赋给对应变量。code
let obj = {
name: "zwq",
age: 18,
sex:'female'
}
let name,age;
({ name, age } = obj);
console.log(name, age); //zwq 18
上面代码是先声明变量,在赋值。也能够声明变量时同时赋值,以下:对象
let {name,age} = obj;
console.log(name,age); //zwq 18
当本身声明的变量不想和对应的属性重名是blog
let {name:Oname,age:Oage} = obj;
console.log(Oname,Oage); //zwq 18
默认赋值索引
下面代码采用默认赋值,形参a,分别默认赋值为10,20。当值传入一个值的时候,b并非undefined,而是取默认值。开发
function sum(a = 10,b = 20){
console.log(a+b);
}
sum(5);
下面代码使用默认值的方式给变量sex附上默认值male,当对象中找不到对应的属性是取默认值,当存在对用属性是,取对象里面的值。io
let {name:Oname,age:Oage,sex ='male' } = obj;
console.log(Oname,Oage,sex);
解构数组
因为数组也是对象,属性名是当前的索引值,因此下面能够成功的进行变量赋值。同时数组中用length属性。所以声明length变量也能够获取对象的属性值:数组的长度
let arr = [1,2,3];
let {0:x,1:y,2:z} = arr
console.log(x,y,z); //1,2,3
而解构就是使用左右两侧极为类似的解构进行赋值,在数组解构中这样书写:
let [x,y,z] = arr;
console.log(x,y,z); //1,2,3
当数组嵌套对象的形式也能够利用左右两侧类似解构进行赋值。
用,,,占位,照抄arr的结构。以下声明name变量,而且打印zwq.
let arr = [1,2,3,{name:'zwq'}];
let [,,,{name}] = arr;
console.log(name);