- 等号左边的变量与等号右边没有对应上,则会被解析成undefined
let [a, b, c] = [1, 2]
a // 1
b // 2
c // undefined
上述代码中的 c , 与之匹配的是undefined,所以最后为undefined
- 等号右边是一个不可遍历的结构
let [a, b] = 1
这很明显就会直接报错, 解构失败, 因为等号两边都无法进行匹配
不完全解构
这个简单,直接看代码:
let [a, b] = [1, 2, 3]
a // 1
b // 2
简单点说就是等号右边有很多值,但等号左边只有两个变量需要赋值, 这种叫做不完全解构, 不会报错。
默认值
在解构时,是允许给予一个默认值的, 如果该变量没有解构成功, 则会将默认值赋值给它, 例如:
let [a, b=2] = [1]
a // 1
b // 2
如果b没有赋值一个默认值 2 , 则 b 应为 undefined , 现在给了b 一个默认值 2 , 则在b 解构失败时,将默认值2赋值了给它。
补充一下: 在给予变量默认值时, 只有当没有对应的值与之匹配时或者与之匹配的是 undefined 时, 才会将默认值赋值给自己, 但是如果与之匹配的是 null , 则默认值不起作用, 最后会将 null 赋值给它, 看例子:
let [a=1, b=2, c=3] = [undefined, null]
a // 1
b // null
c // 3
对象的解构赋值可以很方便的取出对象里面的值, 先来看一下我们平时取出对象中的值,并赋值给一个变量是如何操作的吧:
let obj = {name: ‘jack’, age: 18, gender: ‘男’}
let name = obj.name
let age = obj.age
let gender = obj.gender
有没有觉得很麻烦?因为要命名一个个变量,并对齐进行赋值,我们来看一下对象的解构赋值是如何帮我们简化操作的:
let {name, gender, age} = {name: ‘jack’, age: 18, gender: ‘男’}
就只需要一行代码就可以将对象中的三个值都取出来并赋值给三个变量。但是,我们在使用对象的解构赋值的时候必须要注意,等号左边的顺序是随意的, 系统会根据你的变量名, 优先去对象中寻找与你对象名相同的键, 将它的值赋值给这个变量。
这么一说, 我们的变量名就必须要跟对象中的健名一样了吗?不是的, 其实我们可以自己再起一个名字,例如:
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
算法刷题
大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整
71)**
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整