本文摘自PHP中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于ES6中变量的解构赋值的用法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。数组的解构赋值
基本用法
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为结构。
在ES6之前想要为变量赋值,只能指定其值,如下:
1 2 |
|
而在ES6中可以写成这样,如下:
1 2 |
|
值得注意的是,等式两边的值要对等,这样左边的变量才会被赋上右边对应的值,如果不对等左边的值将会出现undefined,如下写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
还有一种情况,等号左边为数组,但是等号右边为其他值,将会报错。如下:
1 2 3 4 5 6 7 8 |
|
但是如果左边为数组,右边为字符串,将会取字符串的第一个下标的值
1 2 |
|
对于Set结构,同样可以使用数组的解构赋值。
1 2 |
|
默认值
解构赋值允许指定默认值
1 2 3 |
|
特殊
1 2 |
|
Tips: 在es6中使用严格相等运算符,在结构赋值中如果需要默认值生效,则应对等的值为undefined的时候才会采用默认值,否则还是使用赋值。上面中null 不严格等于undefined++
如果默认值的赋值为一个表达式,只有当等号右边的赋值没有值为undefined的时候,才会取表达式中的值,如下:
1 2 3 4 5 6 |
|
对象的解构赋值
与数组的不同点是,数组的元素必须和赋值的元素要位置一致才能正确的赋值,而对象的解构赋值则是等号两边的变量和属性同名即可取到正确的值。否则值为 undefined
1 2 3 4 5 6 7 |
|
对象的解构赋值还有将某一个现有对象的方法赋值到一个新的变量,如下:
1 2 3 4 5 |
|
如果等号左边的变量名不能和等号右边的对象的属性名一致,则必须写成如下格式:
1 2 |
|
对象的解构赋值一样是可以嵌套解构的,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
嵌套赋值
1 2 3 4 |
|
如果解构模式 是嵌套的对象,如果子对象所在的父属性不存在,则会报错,如下:
1 |
|
默认值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
注意点:
1)不能将已声明的变量用于解构赋值,因为已经是一个代码块。
字符串的解构赋值
如果赋值的对象是数组,字符串将被分割为数组的格式,一一对应赋值
1 2 3 4 5 6 7 |
|
数值和布尔值的解构赋值
如果等号右边是数字或者布尔值 则转换成对象或者说,除了是数组和对象,其他值都将转换成对象,null 和 undefined 除外。如下:
1 2 |
|
函数参数的解构赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
其他
不能使用圆括号的情况
- 变量声明语句
- 函数参数
- 赋值语句的模式
可以使用圆括号的情况
- 赋值语句的非模式部分,可以使用圆括号
解构赋值的用途
- 交换变量的值
- 从函数返回多个值
- 函数参数的定义
- 提取JOSN数据
- 函数参数的默认值
- 遍历Map结构
- 输入模块的指定方法
以上就是ES6中变量的解构赋值的用法介绍(附代码)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
js中object.defineproperty的用法介绍(代码示例)
更多相关阅读请进入《ES6》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者