「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。
解构赋值在我的理解就是,变量命名赋值的新方法。使得声明多个变量并赋值更加的简单了,菜鸟教程里面给出的理解是,解构赋值是对赋值运算符的扩展。 他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。 在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。
下面我们来说说解构赋值具体怎么实现把~ 解构赋值的两部分:
- 解构的源,解构赋值表达式的右边部分
- 解构的目标,解构赋值表达式的左边部分。
就是要把它(解构的源)变成什么(解构的目标)
一:数组的解构:
1.变量名与数组长度相同:
let [a,b,c] = [1,2,3]
相当于 let a = 1,let b = 2,let c = 3
2.变量名与数组长度不相同:
let [a,b,c,d,e] = [1,2,3]
如果不相等,会一次先把前面3个赋值,后面两个没有赋值的,值为undefined
3.将数组名直接写到等式右边:
let arr = [1,3,6,8]
let [a,b,c,d] = arr
二:对象的解构:
1.变量名与属性名相同,且数量相同:
let obj ={name:'lmr',age'18'}
{name,age} = obj(可以取出对象里的属性值,赋值给变量)
2.数量不相同:
let obj ={name:'lmr',age'18'}
{name,age,class} = obj
最后一个没有得到值得值为undefined
取对象的属性:
let obj ={name:'lmr',age'18'}
(1)变量名和对象属性名同名:
{name,age} = obj(可以取出对象里的属性值,赋值给变量)
(2)变量名和属性名不同名:
let{name:uname,age:uage} = obj
name:用于属性匹配
uname:将值赋值给uname
(3)
let{name:uname,age:uage,school} = obj
对象里没有,则值为undefined
(4)设置默认值
let{name:uname,age = 22,school} = obj
对象age属性有值,就调用对象属性的值,没有就用 = 的值
(5)对象的属性值是已经声明过的:
(5.1)属性值和属性名相同:
let a = 1,let b = 2,let c = 3
let obj = {
a, //a = a(属性名a = 变量a)
b,
c
eat() {} //可以省略function
原本的写法:eat:function() {}
}
(5.2)属性值和属性名不相同:
let obj = {
a = a1,
b = a2,
c = a3
}
对象属性名和变量名相等可以简写,不相等则不能简写