解構: 從數組或對象中提取值,對變量進行賦值
解構賦值號的兩邊的格式需要相互對應,對應位置的數值類型也需要一致
let [a,b.[c]] = [1,2,[3]]
a==1
b==2
c==3
let [ar,...are] = [1,2,3,4]
ar==1
are==[2,3,4]
let [f,...h] = [1]
f==1
h==[]
解構不成功的值會返回undefined
解構數組是按照順序進行解構賦值下去的,而解構對象的時候則會根據對象的名稱進行賦值,比如
let {a,b} = {b:'alice',a:'sam'}
a==sam
b==alice
解構對象的時候,需要賦值的對象的名稱一定要和賦值右面的是一直的,不然將會找不到該對象,得到undefined
解構對象的時候,如果對象的變量名和屬性名不一致的時候,賦值的時候,變量名一定要寫對,不然就會找不到這個值得到undefined,而我們賦予的值是給與屬性名,變量名並不會得到賦值
let {obj:bo} = {obj:'alice'}
bo === alice
let {obj:bo,abj:ad} = { obj:'this'}
bo === this
ad === undefined
obj === undefined
對象的解構可以設置默認值
常見的解構用途:
1: 交換變量的值
let [a , b ] = [b, a]
2: 從函數中返回多個值
function fn(){
return [a,s,b]
}
var [a,b,c] = fn()
3: 給函數賦值
function fn([a,b,c]){
//函數執行方法
}
fn([1,2,3])
4: 獲取json對象中的值
var obj = {
val:'zlic',
name:'anga'
age:23
}
let {val,name,age} = obj
5: 遍歷map解構
var map = new Map()
map.set('first,'one')
map.set('second','two')
for(let [key,value] of map){
console.log(key+'-'+value
}
// first-one
// second-two
也可以單獨的只循環其中的key或者value
6: 輸入指定模塊的方法
(一般在我們引用一些庫的時候,我們可能只引用到其中的某個方法,此時我們便可以使用到解構,將其中一個方法解構獲取出來,import導入和require導入方式都會有,我們需要用{} 包裹住解構獲取到的方法