解构赋值
展开语法与解构赋值
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]
默认值
[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7
变量交换
[a, b] = [b, a];
忽略某些返回值;
var [a, , b] = f();
无声明赋值
({a, b} = {a: 1, b: 2});
别名
var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
For of 迭代和解构
var people = [
{
name: 'Mike Smith',
family: {
mother: 'Jane Smith',
father: 'Harry Smith',
sister: 'Samantha Smith'
},
age: 35
},
{
name: 'Tom Jones',
family: {
mother: 'Norah Jones',
father: 'Richard Jones',
brother: 'Howard Jones'
},
age: 25
}
];
for (var {name: n, family: {father: f}} of people) {
console.log('Name: ' + n + ', Father: ' + f);
}
属性名解构
let key = "z";
let { [key]: foo } = { z: "bar" };
console.log(foo); // "bar"
模板字面量
转义使用\