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