定义:解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。
let arr = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
let [a,b,c,d,e,f] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
console.log( a,b,c,d,e,f );
1、数组解构赋值:一 一对应
// 变量名和值相同
// let [a, b, c, d, e, f] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
// console.log( a, b, c, d, e, f );
// 变量少值多
// let [a, b, c] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
// console.log(a, b, c);
// 变量多值少
// let [a, b, c, d, e, f, g, h, i] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕
布'];
// console.log(a, b, c, d, e, f, g, h, i);
// 按需取值
// let [, a, , b, , c] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
// // abc
// console.log(a, b, c);
// 剩余值取法
// let [a, b, ...c] = ['张飞', '关羽', '赵云', '马超', '张辽', '吕布'];
// console.log(a, b, c);
// 多维解构:
let [, a, , [, b, c]] = ['张飞', '关羽', '赵云', ['武松', '鲁智深', '林冲']]
// abc
console.log(a, b, c);
2、对象解构:把属性名当做变量
// let { index, height, age, uname } = {
// uname : '张三丰',
// age : 22,
// sex : '男',
// index : 6,
// score : 99,
// height : '188CM',
// width : '90KG'
// }
// console.log( index, height, age, uname );
let { dog : {uname, age} } = {
uname : '张三丰',
age : 22,
sex : '男',
index : 6,
score : 99,
dog : {
uname : '大黄',
age : 1,
},
cat : {
uname : '大橘',
age : 2
}
}
console.log( uname, age );
// let uname = '哇哈哈';
// // 如果已经存在某个变量名,用冒号改名字
// let {uname:userName, ...index} = {
// uname : '张三丰',
// age : 22,
// sex : '男',
// index : 6,
// score : 99,
// height : '188CM',
// width : '90KG'
// }
// console.log( userName, index );
// let obj = {
// uname : '张三丰',
// age : 22,
// sex : '男',
// index : 6,
// score : 99,
// height : '188CM',
// width : '90KG'
// }
// let uname = obj.uname;
// let age = obj.age;
// let sex = obj.sex;
// console.log( uname, age, sex );