搜索
写经验 领红包
 > 家居

es6对象的解构赋值(es6解构赋值时如何设置一个别名)

导语:ES6新特性系列之对象解构赋值

es6对象的解构赋值(es6解构赋值时如何设置一个别名)

在之前的一篇文章中,我们学习了《ES6新特性系列之数组解构赋值》,这篇文章我们继续学习下对象的解构赋值

对象解构赋值

差异

虽然数组和对象都能够进行解构赋值,但是两者的解构赋值具有一定的差异性。数组解构赋值是根据数组的索引进行匹配;而对象是一系列无序属性的集合,只能根据属性名来进行匹配,因此变量名必须与属性名相同才能进行赋值

基本使用

首先我们看下基本的使用方法,代码如下

基本使用

由于baz变量在右边的对象中,没有相同的属性名,所以会返回undefined

存在匹配模式

当存在匹配模式的时候,必须要写成以下这种格式

匹配模式

在这种格式中,会首先找到相同的属性名,然后给属性名赋值

如果我们输出first和last,会报ReferenceError: first is not defined的错误,这就表明实际赋值的是f与l的值。这是因为first与last是匹配的模式,而f与l才是真正的赋值变量

声明与赋值

在采用对象解构赋值时,变量的声明与赋值是一起完成的,根据let与const的特性,如果重复声明就会报错,类似于以下情况

重复声明报错

上述的代码中如果改成var命令,则不会报错

嵌套对象的解构

和数组一样,对象的解构也支持嵌套模式,例如对象的某个属性值为一个对象的情况,而且也存在匹配模式的情况,匹配模式不会被赋值

嵌套对象解构

对象的解构赋值中,同样会出现匹配模式,上述的loc与start就是匹配的模式,真正赋值的变量是line,所以line会赋值1,而loc与start输出会报错

默认值

同数组一样,对象解构赋值也存在默认值,同样默认值生效的条件是右侧属性值严格等于(===)undefined

对象解构初始值

注意点

在使用对象解构赋值时,需要注意的是如果将一个已经声明的变量用于解构赋值,需要很小心,以下就是错误的写法

错误的写法

因为Javascript引擎会将{x}解析成一个代码块,该语句就会出现语法错误。正确的方法应该是用小括号()括起来

正确的写法

用途

一个函数只能有一个返回值,如果需要具有多个返回值,可以将返回值设置为数组或者对象的形式,那么利用解构赋值,就可以很方便的取到多个返回值

用途

总结

这篇文章主要讲的是对象的解构赋值,你会了吗?

ES6新特性系列之let命令

ES6新特性系列之const命令

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小德创作整理编辑!