按照原有值的结构:把原数值中的某一部分内容快速的获取到
也可以说是快速的给一个变量赋值
【1】数组的解构赋值
let ary=[12,23,34];
传统的赋值操作 a b c 想要用数组里的值 需要用索引一一赋值
加粗样式结构赋值本身是ES6的语法规范,使用什么关健字来声明这些变量都是无所谓的
但是:这个操作在JS的严格模式下是不允许的,因为严格模式下不允许出现非使用var /let 等声明的变量
[12,[23,24][45,56,[67,78]]] 把多维数组中的 34、56、78获取到
并且分别赋值给 A、B、C
let [,[,A],[,B,[,C]]]=[12,[23,24],[45,56,[67,78]]]; // 不需要的数用 ,代替
console.log(A, B, C);//assign.js:16 24 56 78
如果只想获取数组中的前面的某一项 后面的结构不需要补全 如果想用后面的部分 结构就必须补全
在解构赋值中,我们可以给某一项设置默认值
解构赋值中支持 . . . xxx 拓展运算符
注意:拓展运算符只能出现在解构赋值中的解构末尾的位置
【2】对象的解构赋值
在对象的解构赋值中需要注意的是:
赋值的变量需要和对象中的属性名吻合,否则无法获取对应的属性值
和数组解构赋值一样 我们可以把后面不需要获取的结构省略掉,而且也可以给当前的变量设置默认值
和数组解构赋值不一样的地方在于,对象前面不允许出现空白占位(因为对象获取需要通过具体的属性名获取,写成空的话,浏览器不知道怎么识别)
支持 . . . xxx 拓展运算符
把对象进行浅克隆(只把第一级克隆了)
在对象的解构赋值中,我们可以把对象的属性名起一个小名(A和B相当于小名或者别名)
【3】解构赋值的作用
(1)快速交换两个变量的值
(2)从函数中返回多个值
(2)函数的参数的定义 & 参数的默认值
(可以快速的接收到传递的多个值 我传递的是一个数组或者对象)
动画库封装的默认值 可以用解构赋值来设置默认参数
为了防止什么都不传的时候会报错 所以给‘默认参数的整个对象’也设置个默认值 空对象
在ES6中支持给函数设置默认值