前言

今天忙完了说看看面经,然后翻着翻着看见了一篇关于解构赋值的文章

乍一看我说这有啥好讲的,大家不是都会用了,事实是终究是我肤浅了,不过这篇文章确实也没讲啥,但却讲到了解构赋值的核心逻辑

解构赋值

数组解构

1
2
3
let arr = [1,2,3,4,5]
let [a,b,c,d,e] = arr
console.log(a,b,c,d,e) // 1 2 3 4 5

对象解构

1
2
3
4
5
6
7
let obj = {
name: '张三',
age: 18,
sex: '男'
}
let {name,age,sex} = obj
console.log(name,age,sex) // 张三 18 男

解构赋值的实质

上面的两段代码大家肯定是手到擒来的,不存在什么问题,但看看下面这段代码呢

1
2
let {a,b:c} = {a:1,b:2}
console.log(a,b,c) // 1 undefined 2

蒙蔽了吧!!!

最开始我也懵逼啊,什么鬼不因该啊???为什么b是undefined,难道不因该是2嘛?

这简直是小母牛骑摩托——牛逼轰轰啊,我一度怀疑自己的记忆

但仔细想想,解构赋值的核心逻辑嘛,等号右边的属性名是a,等号左边的变量名也是a,所以a的值就是1,

等号右边的属性名是b,等号左边的变量名是c,所以c的值就是2

博主给出的解释是解构赋值赋值的实质上是value只赋value不赋key

然后我突然顿悟了,如果大家还是懵的话,不妨看看我的解释

众所周知,js在传递参数如果没有键名那么它的变量名就是键名,也就是说

1
let obj = {x, y};  // 等同于 {x: x, y: y}

这样的话也就意味着

1
2
let {a,b:c} = {a:1,b:2} // 等同于 {a:a,b:c} = {a:1,b:2}
console.log(a,b,c) // 1 undefined 2

这样看的话大家是不是就能理解了呢

尾言

看来自己学的还是太浅了啊,还得多练,嗯!菜就多练