美文网首页
解构赋值

解构赋值

作者: 温梦丽 | 来源:发表于2017-12-03 15:59 被阅读0次

    一.数组的解构赋值

    1.结构赋值可以嵌套

    var[a,b,c,[d,e,[f,g]]]=[1,2,3,[4,5,[6,7]]];
    
    image.png

    2.不完全解构

    var [a,b,c]=[1,2];
    
    
    image.png

    可以看到赋值不成功,变量的值为undefind,相当于只声明了c变量但是没有赋值。
    3.允许设置默认值

    var [a,b,c=5]=[1,2];
    
    
    image.png

    变量c已经指定了默认值为5,即使右侧没有与之对应的值赋给它也没关系,他可以成功赋值5,如果想覆盖默认值5,只需赋一个有效值。

    var [a,b,c=5]=[1,2,3];
    
    
    image.png
    以上是数组的解构赋值,除了利用数组可以解构赋值外,用JSON对象也可以。

    二.对象的解构赋值

    var{b:a}={'b':2}
    
    image.png

    对象的解构赋值的内部机制是想找到同名属性,然后再赋值给对应的变量,真正被赋值的是前者而不是后者。

    var{b}={'b':2}
    
    image.png

    相当于下面这个写法的简写

    var {b:b}={'b':2}
    
    image.png
    var {foo:baz}={'foo':2}
    
    
    image.png

    上面的代码中,foo是匹配的模式,baz才是变量,真正被赋值的是baz,而不是模式foo。

    对象的解构赋值的用法与数组的二结构赋值的用法类似:

    1.对象的解构赋值也可以嵌套

    var {a:{b}}={"a":{"b":5}}
    
    image.png

    此时a是模式,不是变量,因此不会被赋值,如果a也要作为变量赋值,可以写成下面这样

    var {a,a:{b}}={"a":{"b":5}}
    
    
    image.png

    2.可以指定默认值

    var {a,b=2}={"a":1}
    
    
    image.png

    三.字符串的解构赋值

    字符串也可以解构赋值。这是因为此时字符串被转换成了一个类似数组的对象。

    var [a,b,c,d,e]="hello";
    
    
    image.png

    类似数组的对象还有一个Length属性,因此还可以对这个属性进行解构赋值。

    相关文章

      网友评论

          本文标题:解构赋值

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