解构只与语法有关,不与 let,var,const相关
一、数组解构取值
//数组---取值
let arr = ["张三", "李四","王五"];
let a = arr[0];
let b = arr[1];
let c = arr[2];
--------------------------
//值和变量数量是一一对应的时候
let arr = ["张三", "李四","王五"];
let [a,b,c] = arr;
console.log(a); //张三
console.log(b); //李四
console.log(c); //王五
//值和变量数量不是一一对应的时候
let [a1,b1,c1,d1,e1]=[4,5,6]
console.log(a1); //4
console.log(b1); //5
console.log(c1); //6
console.log(d1); //undefined 值和变量数量不是一一对应,多的打印Undefined
二、对象的解构取值
//定义一个对象
let obj={
username:'张三',
age:18,
sex:'女',
hobby:['看书','游戏','唱歌']
}
let {username,age,sex,hobby}=obj
console.log(username,age,sex,hobby); //张三 18 女 ['看书', '游戏', '唱歌']
//深度解构
let { username,sex, age, hobby:[a2,b2,c2] } = obj;
console.log(username,age,sex,a2,b2,c2); //张三 18 女 看书 游戏 唱歌
//解构
const { age, username } = { username: 'Alex', age: 18 };
//18 "Alex"
//完整形式为:
const { age: age, username: username } = { username: 'Alex', age: 18 };
// 18 "Alex"
console.log(age, username);
三、同名、异名、深度解构 ``
//定义一个对象
var obj2 = {
userName: "张三",
teacherInfo: {
teacherName: "李四"
},
stuList: [{
stuName: "小夫",
age: 20
},
{
stuName: "大熊",
age: 20
}
]
}
3.1 同名解构
// 同名解构
let {
userName,
teacherInfo,
stuList
} = obj2
console.log(userName,teacherInfo,stuList) //张三 {teacherName: '李四'} (2) [{…}, {…}]
3.2 异名解构
// 异名解构
let {
userName: a3,
teacherInfo: b3,
stuList: c3
} = obj2
console.log(a3,b3,c3); //张三 {teacherName: '李四'} (2) [{…}, {…}]
3.3 深度解构
// 深度解构
let {
userName,
teacherInfo: {
teacherName
},
stuList: [{ },
{
stuName
}
]
} = obj2
console.log(userName,teacherName,stuName); //张三 李四 大熊
四、交换变量
//交换变量
let x = 10, y = 20;
console.log(x, y); //10 20
[x, y] = [y, x]; //直接将两个变量互换console.log(x,y);
console.log(x,y); //20 10
五、解构的赋值
//解构的赋值
let userName3 = "张三";
let age3 = 18;
let obj3 = { userName3, age3 };
console.log(obj3); //{userName3: '张三', age3: 18}