解构的用法

Object的解构

假如我们有一个对象 obj

const obj = {
      name: "zhangsan",
      age: 20,
      gender: "male",
}

通常情况我们要获取到 obj 内的属性,需要分别定义变量通过 . 操作符获取

const name = obj.name,
      age = obj.age,
      gender = obj.gender

通过解构可以更加简洁的获取对象属性值,可以颠倒顺序,下面三组结果都是一样的

const { name, age, gender } = obj 
const { name, gender, age } = obj 
const { gender, name, age } = obj

如果希望换一种变量名字需要用到 : 操作符

const { name: myName, age: myAge, gender: myGender } = obj

还可以给变量附加默认值,如果 obj 没有 name 属性就使用默认值,这样即使 obj 内没有对应属性名也不会出错

const {name = "zs", age, gender} = obj

如果不使用解构

const name = obj.name // undefined

假如对象是多层嵌套

const obj = {
      name: "zhangsan",
      hobby: {
        a: "play",
        b: "eat"
      }
}

如果需要取到 obj 内部 hobby 对象的属性,同样也可以改名和赋默认值

const { hobby:{a: myPlay = "computer games"}, hobby:{b} } = obj

Array的解构

类似于对象,如果有一个数组

const array = ["zhangsan", "lisi", "wangwu"]

通过解构方法给三个变量赋值

const [ name1, name2, name3 ] = array

还可以把字符串拆分后赋值给变量

 const str = "zhangsan 20 male"
 const arr = str.split(" ")
 const [ name, age, gender ] = arr
 console.log({name, age, gender}); // name: "zhangsan", age: "20", gender: "male"

互换变量的值,还可以交换多个变量,原理一样

let a = 11;
let b = 22; // 分号不能省,否则会报错
[a, b] = [b, a];
console.log(a, b);
posted @ 2021-03-31 14:18  ychizzz  阅读(228)  评论(0)    收藏  举报