ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
下面为大家介绍一些常用的解构赋值操作。
# 1. 变量交换
ES6 之前我们变量交换的方式可能如下:
var a = 1; | |
var b = 2; | |
var temp; | |
temp = a; | |
a = b; | |
b = temp; |
在上述例子中 temp
其实是一个临时变量用来存储 a
的值,最后我们把 temp
的值赋值给 b
。
使用解构运算则非常简单:
let a = 1; | |
let b = 2; | |
[a, b] = [b, a]; | |
console.log(a); // 2 | |
console.log(b); // 1 |
上例子中, [a, b] = [b, a]
是一个解构赋值。等号左侧是一个由 b、a 创建的数组 [2, 1]
,数组对对应的值被解构给了等号右边 [a, b]
。
# 2. 访问数组
当我们有需求访问数组中任意元素时,但是如果数组为空,需要返回一个默认值时,ES6 之前可能会如下方式操作:
var list = []; | |
let a = 1; | |
if (list.length > 0) { | |
a = list[0] | |
} | |
console.log(a); // 1 |
使用数组解构可以大大简化我们的操作
const list = []; | |
const [a = 1] = list; | |
console.log(a); // 1 |
上述例子中,我们在使用解构时给 a
一个默认值,如果数组 list
第一个值不为空则将其中第一个值赋值给 a
,如果为空值 a
为我们设置的默认值。
我们也可以用如下方法访问其他数组元素:
const list = []; | |
const [, b = 2] = list; | |
console.log(b); // 2 |
# 3. 扩展运算符
扩展运算符是三个点 ...
。
- 数组的扩展
const list = [1, 2, 3, 4]; | |
const [a, ...b] = list; | |
console.log(a); // 1 | |
console.log(b); // [2, 3, 4] |
上述例子中, [a, ...b] = list
创建了一个新的数组 b,数组 b 中包含了除了第一个元素外的所以元素。
- 对象的扩展
const obj = { | |
a: 1, | |
b: 2 | |
} | |
const {a, ...d} = obj; | |
console.log(a); // 1 | |
console.log(d); // {b: 2} |
上面就是要介绍的一些 javascript 中解构的小技巧了,如果你对这方面内容感兴趣的话,可以多查阅官方文档了解哦。