神么是解构

使用es6的语法规则,将一个对象或数组的某个属性提取到变量中
未使用结构的代码

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. }
  6. const name = obj.name;
  7. const age = obj.age;
  8. const sex = obj.sex;
  9. console.log(name,age,sex)

控制台打印结果
image.png

解构的语法

解构不会对被解构的目标造成任何影响
在解构中使用默认值
同名变量结构(同名变量是指变量与其被结构的属性名一样)
{同名变量 = 默认值}
非同命属性结构
{属性名:变量名}
同名变量结构示例

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. }
  6. const {name,age,sex} = obj;
  7. console.log(name,age,sex)

控制台打印结果
image.png
非同命属性结构

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. }
  6. const {name:na,age:a,sex:s} = obj;
  7. console.log(na,a,s)

控制台打印结果
image.png
当在对象中结构对象

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. // 深层解构
  6. login:{
  7. id : 1,
  8. pasw:"awefasf",
  9. }
  10. }
  11. // age = 1 给age赋予默认值
  12. const {name,age = 1,login:{
  13. id,
  14. pasw,
  15. }} = obj;
  16. console.log(name,age,id,pasw)

当在对象中结构数组

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. arr: [1000, 2, 3, {
  6. id: 1,
  7. login: 123465,
  8. pasw: 123
  9. }]
  10. }
  11. const {
  12. name,
  13. age,
  14. sex,
  15. //深层解构数组中的对象
  16. arr: [n1, , , {
  17. id
  18. }]
  19. } = obj
  20. console.log(name, age, sex, n1, id)

控制打印效果
image.png
剩余参数

  1. const obj = {
  2. name: '张三',
  3. age: "15",
  4. sex: '男',
  5. }
  6. const {name:na,...a} = obj;
  7. console.log(na,a)

控制台打印效果
image.png