解构赋值就是把变量(数组,对象,字符串中的元素拿出来)->解构,再赋值,应用很多,还在初学阶段就只是把它结构出来打印下来还不会应用
数组解构赋值
数组解构两边格式要对应,举个栗子
我们来看看正确的范例
1 | let [a,[b,c],d] = [1,[2,3],4]; |
下面是转换出来的ES5代码,看上去很和谐,打印出来的是我们想要的结果->2
1 | var a = 1, |
下面是错误范例
1 | let [a,[b,c],d] = [1,2,3,4]; |
下面是转换好的ES5代码,我们可以看到相当的不和谐
1 | var _ref = [1, 2, 3, 4], |
下面再来看看赋默认值,这里着重讲一下undefined和null,当你赋值成undefined就是什么都没有的意思,并没有覆盖掉默认值,而你赋值成null则返回的就是空null,他会覆盖掉你的默认值,再就是当你又没给默认值又没赋值时输出的是undefined
1 | let [a,b=2] = [1,null]; |
打印出来的是null
1 | let [a,b=2] = [1,undefined]; |
打印出来的是2
对象解构赋值
对象的解构赋值与数组的不同就在于他不是顺序的,必须要前后名字一样才能对应上,数组后面我们知道是没有名字的,栗子如下
1 | let {a,b} = {a:1,b:2}; |
输出的结果是2
1 | let {a,c} = {a:1,b:2}; |
这时将报b is undefined的错
接下来是一个容易出错的地方,就是如果你是先定义了变量后来才对他解构赋值,那对于这个报错,一个括号就可以解决
1 | let a; |
结果如你所愿会打印出1
字符串解构赋值
字符串解构赋值并不常用但存在就有他存在的道理,这里简单的写个栗子
1 | let [a,b,c] = 'xue'; |
结果也是如愿的x,这里说一下能用单引就用单引,可以减少解析时的负担。