代码之家  ›  专栏  ›  技术社区  ›  Jay Jeong

我不太懂传递参数的javascript语法

  •  2
  • Jay Jeong  · 技术社区  · 8 年前

    我的代码:

    const users = [ { id: 1, name: 'user1' }, { id: 2, name: 'user2' } ]
    
    p = new Promise( resolve => resolve(users) )
    
    p.then( (user) => console.log(user) )   
    

    返回以下日志:

    [{id:1,name:'user1'},{id:2,name:'user2'}]

    如果我把它改成下面的样子,

    users.then( ([user]) => console.log(user) ) 
    

    我收到以下日志:

    {id:1,name:'user1'}

    我不太明白为什么第二个只记录数组中的第一个元素。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Orelsanpls    8 年前

    Destructuring 是一个 ES6 阿卡 ECMA2015 特征。

    你可以解构 Array Objects .


    Object 如下图所示进行解构,允许您拾取 keys 你想从一个 object 使用简单的语法。

    const obj = {
      a: 'a',
      b: 'b',
      c: 'c',
    };
    
    // Without object destructuring
    const a_ = obj.a;
    const b_ = obj.b;
    
    
    // With object destructuring
    const {
      a,
      b,
    } = obj;
    
    console.log(a);

    数组 解构是完全相同的,但不是指定 钥匙 如果你想得到,你可以用 index 数据。

    const arr = [
      'a',
      'b',
      'c',
    ];
    
    // Without array destructuring
    const a_ = arr[0];
    const c_ = arr[2];
    
    // With array destructuring
    const [
      a, , c,
    ] = arr;
    
    console.log(c);

    你可以使用 数组 对象 在任何地方解构;包括在函数参数中。在这种情况下特别好,因为你可以指定 default 容易估价 钥匙 如贝娄

    function func({
      a,
      b,
      c = 'default',
    }) {
      console.log(a, '/', b, '/', c);
    }
    
    func({
      a: 'j\'aime la france',
      b: 'vive les baguettes',
    });
        2
  •  4
  •   Francesco    8 年前

    这是一个 destructuring assignment

    [a, b, c] = [1, 2, 3]
    
    console.log(a)
    console.log(b)
    console.log(c)

    但是如果你只对一个进行解构,你会得到数组的第一个值

    [a] = [1, 2, 3]
    
    console.log(a)

    对于您的示例,可以在许多地方(如函数参数)执行解构