让左侧出现和右侧值相同的结构,以此快速获取到我们需要的内容
真实项目中最常用的就是对对数组和对象的结构赋值
1.数组的结构赋值
// let ary = [10, 20, 30, 40, 50];
// let n = ary[0], m = ary[1], x = ary.slice(2);
// console.log(n, m, x);
// let [n, m, ...x] = ary;
// ...x扩展运算符,把剩下的内容存储到x中,x是个数组,但是它只能出现在最后
// console.log(n, m, x); // 10 ,20, [30,40,50]
// let [n, , m, , , x] = ary; //x 为第6项
// console.log(n, m, x); //10, 30,undefined 如果没有这一项,我们可以基于等号赋值默认值
//多维数组结构赋值
let ary = [10, [20, 30, [40, 50]]];
let [n, [, , [, m]]] = ary;
console.log(n, m); // 10 50
2.对象的结构赋值
let obj = {
name: "obj",
age: 10,
sex: 'boy',
frineds: ['bob', 'mike', 'ace', 'jack', 'sery']
}
// let name = obj.name;
// let age = obj.age;
// let {
// name,
// sex
// } = obj; // 要求创建的变量和属性名一致
// console.log(name, sex);
// let {
// age: nianling // 冒号相当于获取的结果设置了一个别名(变量名):创建了一个叫做nianling的变量存储于obj.age的值
// } = obj;
// console.log(nianling); // 10
// let { height = '180cm' } = obj
// console.log(height); //180cm
let {
name,
frineds: [firstFriend]
} = obj;
console.log(name, firstFriend); // obj,bob