# 解构赋值

  • 5.1 用对象的解构赋值来获取和使用对象某个或多个属性值。 eslint: prefer-destructuring (opens new window)

    Why? 解构保存了这些属性的临时值/引用

    // bad
    function getFullName(user) {
      const firstName = user.firstName;
      const lastName = user.lastName;
    
      return `${firstName} ${lastName}`;
    }
    
    // good
    function getFullName(user) {
      const { firstName, lastName } = user;
      return `${firstName} ${lastName}`;
    }
    
    // best
    function getFullName({ firstName, lastName }) {
      return `${firstName} ${lastName}`;
    }
    
  • 5.2 用数组解构.

    const arr = [1, 2, 3, 4];
    
    // bad
    const first = arr[0];
    const second = arr[1];
    
    // good
    const [first, second] = arr;
    
  • 5.3 多个返回值用对象的解构,而不是数据解构。

    Why? 你可以在后期添加新的属性或者变换变量的顺序而不会打破原有的调用

    // bad
    function processInput(input) {
      // 然后就是见证奇迹的时刻
      return [left, right, top, bottom];
    }
    
    // 调用者需要想一想返回值的顺序
    const [left, __, top] = processInput(input);
    
    // good
    function processInput(input) {
      // oops, 奇迹又发生了
      return { left, right, top, bottom };
    }
    
    // 调用者只需要选择他想用的值就好了
    const { left, top } = processInput(input);
    

回到顶部