美文网首页
解构赋值内容整理

解构赋值内容整理

作者: Ordenme | 来源:发表于2020-09-27 15:08 被阅读0次

    解构赋值

    使用let const生明过的变量在解构赋值时不能再次声明。

    let foo;
    let {foo} = {foo: 1}; // SyntaxError: Duplicate declaration "foo"
    

    解构赋值分3种结果:
    1、解构成功。
    2、不完全解构。(也属解构成功)
    3、解构失败。
    解构赋值两种运用情况:
    1、数组。
    2、对象。
    解构赋值是通过模式匹配成功来取值和赋值。
    关键词:模式、匹配
    数组:
    数组解构赋值模式匹配的是位置,即等号左边的数组位置要与右边的数组位置一一对应,位置匹配成功后则可以解构成功。

    let [a,b,c]=[1,2,3]
    //a   1
    //b   2
    //c   3
    

    只匹配一部分的等号右边的数
    当等号左边数组的位置与右边的数组位置可以对应一部分,则会不完全解构。

    let [a] = [1,2]
    //a 1
    

    当等号左边数组的位置与右边的数组位置不能一一对应,则会解构失败。
    解构失败是因为等号左边的模式与右边的模式不同

    let [a,b]=[1]
    var [foo] = [];
    //解构失败报错
    

    对象:
    对象解构赋值模式匹配的是名字(即key/属性名)

    成功
    let { foo,bar} = {"foo":123,"bar":456}
    // foo   123
    // bar   456
    
    不完全
    let { foo} = {"foo":123,"bar":456}
    // foo   123
    
    失败
    let { foo1} = {"foo":123,"bar":456}
    //没有相同的foo1属性名,可以认为解构失败,取到的值是undefind
    //foo1  undefind
    
    如果变量名与属性名不一致,必须写成下面这样。
    var { foo: baz } = { foo: 'aaa', bar: 'bbb' };
    baz // "aaa"
    foo // error: foo is not defined
    

    foo报错原因:这个foo是对象中要匹配的模式。

    相关文章

      网友评论

          本文标题:解构赋值内容整理

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