解构赋值语句

采用更加便捷的语法,访问数组和对象中的值,并将其赋值给变量。
关键点对象解构会找它的原型链。

  1. //传统方法访问数组中的值
  2. const arr = [1, 2, 3];
  3. const a = arr[0],
  4. b = arr[1],
  5. c = arr[2];
  6. //数组解构赋值
  7. const arr = [1, 2, 3];
  8. const [a,b,c] = arr;
  9. //对象解构赋值
  10. const obj = {a: 1, b: 2};
  11. const {a, b} = obj;
  12. //左侧的{ }会被视为块,所以需要加上()
  13. let a, b;
  14. ({a, b} = {a: 1, b: 2});

变量初始化

  1. //数组解构赋值的初始化
  2. const [a = 0, b = 0 ,c = 0] = [1, 2, 3];
  3. //对象解构赋值的初始化
  4. const {a = 10, b = 5} = {a: 3};
  5. const {a: a = 10, b: b = 5} = {a: 3};

实际应用

交换变量

  1. let a = 1, b = 2;
  2. [a, b] = [b, a];

rest操作符

  1. //数组
  2. const arr = [1, 2, 3, 4, 5];
  3. const [a, b, ...c] = arr;
  4. console.log(c); //[3,4,5]
  5. //对象
  6. let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
  7. a; // 10
  8. b; // 20
  9. rest; // { c: 30, d: 40 }

函数传参

关键点函数传参中默认值{ }空数组很重要,可以保证无参数调用函数时不出错。

  1. const user = {
  2. id: 42,
  3. displayName: 'jdoe',
  4. fullName: {
  5. firstName: 'John',
  6. lastName: 'Doe'
  7. }
  8. };
  9. function foo({id = 1} = {}) {
  10. console.log(id);
  11. }