让左侧出现和右侧值相同的结构,以此快速获取到我们需要的内容
真实项目中最常用的就是对对数组和对象的结构赋值


1.数组的结构赋值

  1. // let ary = [10, 20, 30, 40, 50];
  2. // let n = ary[0], m = ary[1], x = ary.slice(2);
  3. // console.log(n, m, x);
  4. // let [n, m, ...x] = ary;
  5. // ...x扩展运算符,把剩下的内容存储到x中,x是个数组,但是它只能出现在最后
  6. // console.log(n, m, x); // 10 ,20, [30,40,50]
  7. // let [n, , m, , , x] = ary; //x 为第6项
  8. // console.log(n, m, x); //10, 30,undefined 如果没有这一项,我们可以基于等号赋值默认值
  9. //多维数组结构赋值
  10. let ary = [10, [20, 30, [40, 50]]];
  11. let [n, [, , [, m]]] = ary;
  12. console.log(n, m); // 10 50

2.对象的结构赋值

  1. let obj = {
  2. name: "obj",
  3. age: 10,
  4. sex: 'boy',
  5. frineds: ['bob', 'mike', 'ace', 'jack', 'sery']
  6. }
  7. // let name = obj.name;
  8. // let age = obj.age;
  9. // let {
  10. // name,
  11. // sex
  12. // } = obj; // 要求创建的变量和属性名一致
  13. // console.log(name, sex);
  14. // let {
  15. // age: nianling // 冒号相当于获取的结果设置了一个别名(变量名):创建了一个叫做nianling的变量存储于obj.age的值
  16. // } = obj;
  17. // console.log(nianling); // 10
  18. // let { height = '180cm' } = obj
  19. // console.log(height); //180cm
  20. let {
  21. name,
  22. frineds: [firstFriend]
  23. } = obj;
  24. console.log(name, firstFriend); // obj,bob