解构赋值
一、对 “解构赋值” 的理解
解构:
结构分解,ES6 中允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
解构赋值:
解构赋值是一种赋值表达式,允许您使用数组或对象,将可迭代对象的值或属性分配给变量。解构赋值能让我们用更简短的语法进行多个变量的赋值,大大的减少了代码量。
其应用场景有:
1、解决函数多返回值问题
2、实现交换数
3、json传入数据后对其进行提取
4、提取部分数组
5、提取数组中的数
使用规则:
这种写法要遵循“模式匹配”,只要等号两边模式相同,左边的变量就会被赋予对应的值。
二、解构赋值的分类
解构表达式有两种:array和object。
对象解构赋值
1、对象解构赋值满足“模式匹配”:左侧对象,右侧对象
2、对象的属性没有次序 ,变量必须与属性名同名才能取到正确的值。
3、语法:({ 属性名:变量名 })
4、属性名是匹配模式,变量名才是真正被赋值的变量;
5、属性名和变量名相同时变量名可以省略,属性名和变量名不同时,必须明确对应关系
6、对象解构赋值指定默认赋值,默认值生效条件是对象的属性严格等于undefined。
7、如果解构失败,变量的值等于undefined。
8、如果解构模式是嵌套对象,且子对象存在的父属性存在,将会报错。
9、类似数组的对象都有一个length属性,因此还可以对这个属性进行解构。
10、对象解构赋值可以很方便地将现有对象的方法赋值给某个变量。
数组解构赋值
1、数组的元素按次序排列的,变量的取值是由他的位置决定。(数组赋值从左向右)
2、由于数组本质就是特殊的对象,因此可以对数组进行对象属性的解构。
3、数组内无任何值是,启用默认赋值,赋值数为undefined是也启用默认赋值,不是undefined不会启用默认赋值