// 数组的解构赋值
// 1.正常解构 (一一对应)
let [name,age] = ['张三',18]
console.log(name, age)
// 如果需要更新name 与 age的值 需要在前面加上;
;[name,age] = ['李四',22]
console.log(name, age)
console.log('--------------')
// 2.解构不完全 (值数量 < 变量数量, 给默认值)
let [uname,uage,gender='男'] = ['王二',24]
console.log(uname,uage,gender);
console.log('--------------')
// 3.不完全解构 (值数量 > 变量数量, 使用...rest语法)
let [user , ...arr ] = ["皮皮",22,"男"]
console.log(arr);
console.log(user,...arr);
// 应用场景: 交接二个数
let x = 10
let y = 100
// 通常我们交换两个数的值 是给一个中间值来进行一个交换的
// let z;
// z = x
// x = y
// y = z
// console.log(x,y);
;[x,y] = [y,x]
console.log(x,y);
// 对象的解构赋值
let {email , wechat} = {email:"1@qq.com",wechat:'qqq888'}
console.log(email,wechat);
// [],{},()之前分号不能省略
// {}不能出现在等号左边(左值),所以加上括号()转成表达式
;({email , wechat} = {email:"1224045@qq.com",wechat:'qqq666888'})
console.log(email,wechat);
console.log('-----------------')
// 应用场景2 : 解构传参
let stu = {name:"二狗",age:18}
// 直接传入一个对象 然后按照对象取值方式返回
let show = function(stu){
return `学生的名字叫${stu.name},他今年${stu.age}岁`
}
console.log(show(stu));
// 使用对象解构进行简化传参 此时不需要声明
show = function ({ name, age }) {
// 直接把值传入
return `学生的名字叫${name},他今年${age}岁`
}
stu = { name: '狗蛋', age: '16' }
console.log(show(stu))
//访问器
let person ={
name:"阿狗",
age : 22,
get(){
return `用户名是${this.name},他的年龄是 ${this.age}岁`
},
set(name){
this.name = name
}
}
console.log(person.get());
person.set("狗蛋")
console.log(person.get());