美文网首页
变量解构赋值

变量解构赋值

作者: chengfengwang | 来源:发表于2017-08-07 13:00 被阅读0次

    数组的解构看等号双方数组排列顺序,
    对象的解构对等号双方的,变量名和属性名匹配
    数组

    let [a, b, c] = [1, 2, 3]; a//1   b//2   c//3
    
    let [x, y] = [1, 2, 3];
    x // 1
    y // 2
    
    let [a, [b], d] = [1, [2, 3], 4];
    a // 1
    b // 2
    d // 4
    
    let [foo] = [];
    let [bar, foo] = [1];  //报错 Identifier 'foo' has already been declared
    
    let [foo, [[bar], baz]] = [1, [[2], 3]];
    foo // 1
    bar // 2
    baz // 3
    

    对象

    只看变量和属性是否同名

    let { foo, bar } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"
    bar // "bbb"
    
    let { bar, foo } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"
    bar // "bbb"
    
    var { foo: baz } = { foo: 'aaa', bar: 'bbb' };
    baz // "aaa"
    
    let obj = { first: 'hello', last: 'world' };
    let { first: f, last: l } = obj;
    f // 'hello'
    l // 'world'
    

    实质

    let { foo, bar } = { foo: "aaa", bar: "bbb" };
    let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"
    bar // "bbb"
    
    let obj = {
      p: [
        'Hello',
        { y: 'World' }
      ]
    };
    
    let { p: [x, { y }] } = obj;
    x // "Hello"
    y // "World"
    
    注意,这时p是模式,不是变量,因此不会被赋值。
    
    let obj = {};
    let arr = [];
    
    ({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });
    
    obj // {prop:123}
    arr // [true]
    

    相关文章

      网友评论

          本文标题:变量解构赋值

          本文链接:https://www.haomeiwen.com/subject/erencxtx.html