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