let obj ={
name :'Mr.Lee',
age :100,}//变量名要和属性名一样let{name, age}= obj
//或({name, age}= obj)//上面两个有啥区别 看下面例子//若解构的变量名是已经存在的变量,那会导致什么情况let obj ={
name :'Mr.Lee',
age :100,}let name ='Mr.Wang'let{name, age}= obj //报错({name, age}= obj)//这样写才行//设置一个默认值let{name ,age, gender ='女'}= obj
//若不想要 对象属性名 作为解构变量,可以通过 键值对的方式 更改 变量名 let{name : myName, age : myage}= obj //name将失效,不再是变量名//和数组不同,可以直接省略,不用逗号let obj ={
name :'Mr.Lee',
age :100,
info :{
id :1,
gender :'男'}}let{age, info :{id, gender}}= obj
let{age, info}= obj //这里的info是变量,上面的info不是变量
常用解构
变量交换使用解构
let key =1let value ='Mr.Lee'//解构操作,变量互换[key, value]=[value, key]
函数参数使用解构
functionfn([name, age, gender]){
console.log(name);}fn(['Mr.Lee',100,'男'])functionfn2({name, age , gender}){
console.log(name);}fn2({
name :'Mr.Lee',
age :100,
gender :'男'})
字符串类型的数据解构
let[x, y, z]='ABC';
console.log(x);//A 类似截取操作let{length : len}='ABC';//长度
console.log(len);//输出3
letfn= name => name
console.log(fn('Mr.Lee'))letfn=(x, y)=> x + y
console.log(fn(10,20))letfn=()=>'Mr.Lee'
console.log(fn())//如果函数体需要更复杂的操作,可以将箭头符号右边使用传统函数体letfn=(x, y)=>{return x + y;}
console.log(fn(10,20))//如果箭头符号右边是对象,返回的是对象,则需要用圆括号包含着letfn= name =>({name : name, age :100})
console.log(fn('Mr.Lee').name)