解构赋值
-Object -Array -里面的每一个成员,都可以看成是一个独立的实体
-数组的解构
-对象的解构
-结构的属性名称与变量名称必须一致,而且顺序不太重要
let arr = ["adam","john"];
let [adam , john] =arr;
//等于下面这种写法
//let adam=arr[0];
//let john=arr[1];
console.log([adam , john])//['adam', 'john']
//变量赋值
let [fisrtName,lastName]="xu da".split(" ");
console.log(fisrtName,lastName);//xu da
let arr2= [1,2,3,4,5,6];
let [first,,,,f,f1]=arr2;
console.log(first,f,f1);//1 5 6
let [a,b,c] = "abc";
console.log(a,b,c);//a b c
let user ={} ;
[user.fisrtName,user.lastName]="ming xia".split(" ")
console.log(user);//{fisrtName: 'ming', lastName: 'xia'}
//交换2个变量的值
let guest = "adam";
let admin = "Ptet";
[guest,admin] = [admin,guest];
console.log(guest,admin) //Ptet adam
//...剩余的
let[one,two,...numbers]=[1,2,3,4,5,6,7,8];
console.log(one,two,numbers);//1 2 (6) [3, 4, 5, 6, 7, 8]
//let[aa,bb] =[];
//console.log(aa,bb);//undefined undefined
//可以给他设置一个空文本
let[aa="1",bb="2"] =[];
console.log(aa,bb);//1 2
let options={
title:"Menu",
width:100,
height:200
}
//let {width,height,title}=options
//console.log(width,height,title);//100 200 Menu
//对象解构,位置并不重要,重要的是属性名必须保持一样
let {width:w,height:h,title:t}=options
//可以改名 只要属性名对的上,想取谁取谁
console.log(w,h,t)//
let{title}=options;
console.log(title)//Menu
let obj ={
size:{
width:100,
height:200
},
items:["Cake","Apple"],
extra:true
}
let{
size:{
width,
height
},
items:[item1,item2],
extra
} =obj
console.log(width,height,item1,item2,extra)
//100 200 Cake Apple true