数组的解构赋值
let [a, b, c] = [1, 2, 3];
let [foo, [[bar], baz]] = [1, [[2], 3]];
数组的解构赋值
// let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// console.log(foo) // =>"aaa"
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
console.log(baz) // =>"aaa"
默认值
let [a, b,c='暂无数据'] = ['aa','bb'];
console.log(a,b,c); // =>'aa','bb','暂无数据'
如果一个成员是null,默认值就不会生效,因为null不严格等于undefined
// let [a, b,c="默认值不生效"] = ['aa','bb',null];
// console.log(a,b,c); //=>aa bb null
let [a, b,c="默认值生效"] = ['aa','bb',undefined];
console.log(a,b,c); //=>aa bb 默认值生效
应用:
1.交换变量的值
let x = 1;
let y = 2;
[x, y] = [y, x];
//=> x=2 y=1
2.从函数返回多个值
// 返回一个数组
function example() {
return [1, 2, 3];
}
let [a, b, c] = example();
// 返回一个对象
function example() {
return {
foo: 1,
bar: 2
};
}
let { foo, bar } = example();
3.函数参数的定义
// 参数是一组有次序的值
function f([x, y, z]) {
// console.log(x + y + z) //=>6
}
f([1, 2, 3]);
function f1({ x, y, z }) {
// console.log(x + y + z) //=>6
}
f1({ z: 3, y: 2, x: 1 });
function show({a='默认1',b='默认'}){
console.log(a, b); // 默认1 默认
}
show({})
function show1({a,b='默认'}){
console.log(a, b); //1 "默认"
}
show1({ a:1})
4.提取 JSON 数据
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]