可以将值从数组或属性从对象提取道不同的变量中。
交换变量
let a = 1
let b = 2
[ a, b ] = [ b, a ]//a=2,b=1
数组
const arr = [1,2,3,4];
let [a,b,c,d] = arr;//a=1,b2,c=3,d=4
let [foo] = [];
let [bar, foo] = [1];//bar=1,foo=undefined
防止从数组中取出一个值为undefined
的对象,可以在表达式左边的数组中为任意对象预设默认值;对象同理。
[a = 5, b = 7] = [1];
console.log(a); // 1
console.log(b); // 7
对象
({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20
var o = { p: 42, q: true };
var { p: foo, q: bar } = o;
console.log(foo); // 42
console.log(bar); // true
var { a: aa = 10, b: bb = 5 } = { a: 3 };
console.log(aa); // 3
console.log(bb); // 5
扩展运算符
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]
({ a, b, ...rest } = { a: 10, b: 20, c: 30, d: 40 });
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}
忽略某些返回值
function f() {return [1, 2, 3];
}
var [a, , b] = f();
console.log(a); // 1
console.log(b); // 3