1.数组的解构赋值
1.1基本用法
let [a, b, c] = [1, 2, 3];
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo
bar
baz
let [x, , y] = [1, 2, 3];
x
y
let [foo] = [];
foo
1.2 默认值
let [foo = true] = [];
foo
let [x, y = 'b'] = ['a'];
let [x, y = 'b'] = ['a', undefined];
2.对象的解构赋值
- 对象的属性没有次序,变量必须与属性
同名
,才能取到正确的值 - 可以取到方法
- 如果解构失败,变量的值等于
undefined
- 对象的解构也可以指定
默认值
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
foo
bar
let { baz } = { foo: 'aaa', bar: 'bbb' };
baz
var {x = 3} = {};
x
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz
let obj = { first: 'hello', last: 'world' };
let { first: f, last: l } = obj;
f
l
3.字符串的解构赋值
- 字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const [a, b, c, d, e] = 'hello';
a
b
c
d
e
- 类似数组的对象都有一个
length
属性,因此还可以对这个属性解构赋值。
let {length : len} = 'hello';
len
4.数值和布尔值的解构赋值
- 解构赋值时,如果等号右边是数值和布尔值,则会先转为对象
- 由于
undefined
和null
无法转为对象,所以对它们进行解构赋值,都会报错
5.函数参数的解构赋值
function add([x, y]){
return x + y;
}
add([1, 2]);
6.用途
- 交换变量的值
- 从函数返回多个值
- 函数参数的定义
- 提取 JSON 数据
- 函数参数的默认值
- 遍历 Map 结构
- 输入模块的指定方法