解构函数

我该怎么样生活?这个问题不仅是人生道路之初的问题,更是贯穿人一生的问题。 —— 陈嘉映《何为良好生活》

  • Syntax 句法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var a,b,rest;
    [a,b]=[10,20];
    console.log(a); //10
    console.log(b); //20

    [a,b,...rest] = [10,20,30,40,50];
    console.log(a); //10
    console.log(b); //20
    console.log(rest); //[30,40,50]

    ({a,b} = {a:10,b:20});
    console.log(a); //10
    console.log(b); //20

    ({a,b,...rest}={a:10,b:20,c:30,d:40});
    console.log(a); //10
    console.log(b); //20
    console.log(..rest); //{c:30,d:40}
    • 解构赋值 使用同样的语法,但是在赋值的左边定义了从源变量解开什么值

      1
      2
      3
      4
      var x=[1,2,3,4,5];
      var [y,z] = x;
      console.log(y); //1
      console.log(z); //2
  • 数组解构 Array destructuring

    • 基本变量赋值 Basic variable assignment

      1
      2
      3
      4
      5
      var foo =['one','two','three'];
      var [x,y,z] = foo;
      console.log(x); //"one"
      console.log(y); //"two"
      console.log(z); //"three"
    • 通过声明各自赋值
      变量可以通过独立于变量声明的解构来赋值

      1
      2
      3
      4
      var a,b;
      [a,b]= [1,2];
      console.log(a); //1
      console.log(b); //2
    • 默认值
      如果没有定义从数组中解压的值,则变量可以被赋默认值

      1
      2
      3
      4
      var a,b;
      [a=5,b=7] = [1];
      console.log(a); //1
      console.log(b); //7 —— 默认值
    • 交换变量
      两个变量值可以在一个解构表达式中交换

      1
      2
      3
      4
      var a=10,b=20;
      [a,b] = [b,a];
      console.log(a); //20
      console.log(b); //10
    • 解析从函数中返回的数组
      解构可以使数组返回值更简洁

      1
      2
      3
      4
      5
      6
      7
      function f(){
      return [1,2]
      }
      var a,b;
      [a,b] = f();
      console.log(a); //1
      console.log(b); //2
    • 忽略一些返回值

      1
      2
      3
      4
      5
      6
      function f(){
      return [1,2,3];
      }
      var a[a,,b]=f();
      console.log(a); //1
      console.log(b); //3
    • 将数组的其余部分分布给一个变量

      1
      2
      3
      var [a,...b] = [1,2,3];
      console.log(a); //1
      console.oog(b); //[2,3]
    • 解开正则表达式匹配的值