// let arr = [1, 2, 3];
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];
// console.log(a, b, c);
数组解构
等号左边是右边的模板,必须长得一样
let [a, b, c] = [1, 2, 3];
console.log(a, b, c);
// 输出 1 2 3
let [a, b] = [1, 2, 3];
console.log(a, b, c);
// 输出 1 2
[a, b, c = "js"] = [1, 2];
console.log(a, b, c);
// 输出 1 2 js
[a, b, ...c] = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(a, b, ...c);
// 输出:1 2 3 4 5 6
[, , , a, , , , , ,] = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(a);
// 输出 4 (选择性过滤)
传统模式上 交换赋值需要添加一个中间变量来实现,现在可以参考下面
let x = 1,
y = 2,
t;
console.log(x, y);
// 输出:1 2
t = x;
x = y;
y = t;
console.log(x, y);
// 输出:2 1
let a = 10;
b = 20;
console.log("a=%d,b=%d", a, b);
// 输出:10 20
[b, a] = [a, b];
console.log("a=%d,b=%d", a, b);
// 输出:20 10
对象解构
等号左边是右边的模板,必须长得一样
let item = { id: 10, name: "手机" };
let id = item.id;
let name = item.name;
console.log("id=%d,name=%s", id, name);
// ({ id, name } = { id: 5899, name: "手机" });
//输出: id=5899 name=手机
// { }在js中不能单独放在等号左边 如果需要转表达式 需要加()如下
({ id, name } = { id: 7899, name: "平板" });
console.log("id=%d,name=%s", id, name);
//输出 id=7899 name=平板
参数解构
数组传参
let sum = ([a, b]) => a + b;
console.log(sum([10, 20]));
// 输出:30
对象传参
let getUser = ({ name, email }) => [name, email];
console.log(getUser({ name: "猴子们", email: "10086@163.com" }));
//利用数组的方式返回
// 输出:[ 猴子们,10086@163.com ]