1. 程式人生 > >js es6 解構賦值

js es6 解構賦值

等號 {} 如果 math define col 對象 obj es6

解構賦值:es6允許按照一定的模式,從數組或對象中提取值

let [a,b,c] = [1,2,3];
let {a,b}= {a:1,b:2};


對象

let {a,b}= {b:1,a:2} //輸出2,1,即找屬性名,不管什麽位置


數組
例子1:(完全解構)

let [a,b,c] = [1,2,3];
console.log(a)//1
console.log(b)//2
console.log(c)//3

例子2:(不完全解構)

let [a,[b],c] = [1,[2,3],function(){}];
console.log(a)//1 [0]
console.log(b)//2 [1][0]
console.log(c)//function(){} [2]

這裏的b,就是不完全解構的體現

不完全解構

let[a,b]=[1] //a=1,b=undefind


let [a] =true //匹配不成功,報錯

----------------解構賦值的默認值-----------------------------
怎麽判斷的?
如果右邊的值===undefined,就取默認值

let [a=1,b=2]=[];
console.log(a)//1 
console.log(b)//2


function add(a=0,b=0){ //ab默認值
console.log(a+b)
}

add() 
//0

設計默認值時,是惰性求值,即在用到的時候才執行默認值

function fn(){
console.log("fn")
}

let [a=fn()]=[1] //輸出1

數組例子1

let[a=b,b=2]=[];//輸出a,b時報錯,因為a是b的暫時性死區,a拿不到b

對象例子2

let{a=1} = {a:2}//輸出2
let {PI} =Math //找到Math對象下的PI,let PI=Math.PI


--------------------------------
除了設置默認值時,對象可以用,作為匹配規則
l

et obj ={
aaaa:1,
bbbb:
2 } let{aaaa:a,bbbb:b}=obj //輸出a=1,b=2;aaaa報錯,等號時是設置默認值.

--------------冒號模式,---------------
按照aaaa來匹配,實際使用aaaa的值,obj.aaaa的值aaaa.a的值匹配

例子
let{a,b} = {a:1,b:2} 相當於 let{a:a,b:b} = {a:1,b:2}


如果let{a:ac,b:ad} = {a:1,b:2} 則 ac=1,ad=2;


即默認值設定為let{a:ac=0,b:ad=0} = {a:1,b:2},ac=1,ad=2;

js es6 解構賦值