js es6 解構賦值
阿新 • • 發佈:2018-03-12
等號 {} 如果 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 解構賦值