Destructuring assignment
解构赋值将属性和值从对象或数组中取出,赋值给其他变量
var a, b, rest;
var arr = [1, 2, 3, 4]
[a, b, ...rest] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(rest); // [3, 4]
({a, b, ..rest}) = {a: 1, b: 2, c: 3, d:4});
console.log(a); // 1
console.log(b); // 2
console.log(rest); // {c: 3, d: 4}
var [x, y] = [1, 2];
console.log(x); // 1
console.log(y); // 2
设置默认值
var [a = 1, b = 2] = [3];
a; // 3
b; // 2
var {c = 1, d = 2} = {c: 3}
交换变量
var a = 1;
var b = 3;
[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
解析从函数返回的数组
fn = () => [1, 2];
var [a, b] = fn();
a; // 1
b; // 2
忽略函数的返回值
fn = () => [1, 2, 3]
var [a, , b] = fn();
a // 1
b // 3
解构对象,改变变量名,设置默认值
var {a:aa = 1, b:bb = 2} ={a: 3}
aa // 3
bb // 2