之
前寫了關於es6陣列的解構
現在 go on ;
解構不僅可以用於陣列,還可以用於物件;
物件的解構和陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值是由他的位置決定的;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值;
等號與右邊兩個同名屬性的次序不一致,但是對取值沒有任何的影響
這個例子顯示變數沒有對應的同名屬性,導致取不到值,最後等於undefined;
如果變數名與屬性名不一致,必須寫成下面這樣。
也就是說,物件的解構賦值是下面形式的簡寫;
let = ;也就是說,物件的解構賦值的內部機制,是先找到同名屬性,然後再賦值給對應的變數。真正唄賦值的是後者,而不是前者;
let =上面的**中。foo是匹配的模式,baz才是變數。真正被賦值給變數的baz,而不是模式foo.baz;
//aaa
foo
//undefined
其實說白了,就是位置的問題;
let =總而言之,就是一輛車foo 當裡面沒有乘客時,整個車都是叫foo的人,當出現乘客abc時,這個時候變數就是abc,而賦值也不再賦值給foo,賦值給了abc;//上面的**就等於
let =
let = ;
//這個時候,foo只是乙個模式。而abc才是變數,所以主要才是賦值給abc,而不是模式foo
與陣列一樣,解構也可以用於巢狀解構的物件。\
注意下,這裡的p是模式,不是變數,因此不會被賦值
要想p被賦值,按照下面的模式就可以賦值
let km =歸根結底,就是一句話,哪個位置對應哪個變數,如果,該位置只有單個變數,則就是那個;]
};let ]} = km;
當然還有許多奇怪的問題;
ES6 解構賦值
陣列的解構賦值 let a,b 12,13 let a,b,c d 13,15,16 let a,b c 78,12 23 let x,y 1,3,5 x 1,y 3 let x,y,z a x a,y undefined z let h,b 1,2,3,4 1,2,3,4 預設值 let x tr...
ES6解構賦值
一 基本用法 解構 destructuring 按照一定的模式,從陣列或者物件中提取值,對變數進行賦值。let par1,par2,par3 1,2 console.log par1,par2,par3 1 2 不完全解構時par3對值為undefined 解構賦值允許指定變數對預設值。let pa...
es6解構賦值
coding changes the world accumulating makes yourself 主要從三個方面講述 陣列式的解構賦值 物件式的解構賦值 函式中的解構賦值 preface 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...