美文网首页
解构赋值

解构赋值

作者: 温梦丽 | 来源:发表于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