变量的解构赋值

解构赋值就是把变量(数组,对象,字符串中的元素拿出来)->解构,再赋值,应用很多,还在初学阶段就只是把它结构出来打印下来还不会应用


数组解构赋值

数组解构两边格式要对应,举个栗子

我们来看看正确的范例

1
2
let [a,[b,c],d] = [1,[2,3],4];
console.log(b);

下面是转换出来的ES5代码,看上去很和谐,打印出来的是我们想要的结果->2

1
2
3
4
5
6
var a = 1,
b = 2,
c = 3,
d = 4;

console.log(b);

下面是错误范例

1
2
let [a,[b,c],d] = [1,2,3,4];
console.log(b);

下面是转换好的ES5代码,我们可以看到相当的不和谐

1
2
3
4
5
6
7
8
var _ref = [1, 2, 3, 4],
a = _ref[0],
_ref$ = _slicedToArray(_ref[1], 2),
b = _ref$[0],
c = _ref$[1],
d = _ref[2];

console.log(b);

下面再来看看赋默认值,这里着重讲一下undefined和null,当你赋值成undefined就是什么都没有的意思,并没有覆盖掉默认值,而你赋值成null则返回的就是空null,他会覆盖掉你的默认值,再就是当你又没给默认值又没赋值时输出的是undefined

1
2
let [a,b=2] = [1,null];
console.log(b);

打印出来的是null

1
2
let [a,b=2] = [1,undefined];
console.log(b);

打印出来的是2

对象解构赋值

对象的解构赋值与数组的不同就在于他不是顺序的,必须要前后名字一样才能对应上,数组后面我们知道是没有名字的,栗子如下

1
2
let {a,b} = {a:1,b:2};
console.log(b);

输出的结果是2

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

这时将报b is undefined的错

接下来是一个容易出错的地方,就是如果你是先定义了变量后来才对他解构赋值,那对于这个报错,一个括号就可以解决

1
2
3
let a;
({a}={a:1});
console.log(a);

结果如你所愿会打印出1

字符串解构赋值

字符串解构赋值并不常用但存在就有他存在的道理,这里简单的写个栗子

1
2
let [a,b,c] = 'xue';
console.log(a);

结果也是如愿的x,这里说一下能用单引就用单引,可以减少解析时的负担。

-------------本文结束感谢您的阅读-------------