物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。
let =
foo // "aaa"
bar // "bbb"
let =
baz // undefined
上面**的第乙個例子,等號左邊的兩個變數的次序,與等號右邊兩個同名屬性的次序不一致,但是對取值完全沒有影響。第二個例子的變數沒有對應的同名屬性,導致取不到值,最後等於undefined。
如果變數名與屬性名不一致,必須寫成下面這樣。
let =
baz // "aaa"
let obj =
let = obj
f // 'hello'
l // 'world'
這實際上說明,物件的解構賦值是下面形式的簡寫:
let =
也就是說,物件的解構賦值的內部機制,是先找到同名屬性,然後再賦給對應的變數。真正被賦值的是後者,而不是前者。
let = ;
baz // "aaa"
foo // error: foo is not defined
上面**中,foo是匹配的模式,baz才是變數。真正被賦值的是變數baz,而不是模式foo。
與陣列一樣,解構也可以用於巢狀結構的物件。
let obj =
]};let ] } = obj;
x // "hello"
y // "world"
注意,這時p是模式,不是變數,因此不會被賦值。如果p也要作為變數賦值,可以寫成下面這樣。
let obj =
]};let ] } = obj;
x // "hello"
y // "world"
p // ["hello", ]
const node =
}};let , loc: } } = node;
line // 1
loc // object
start // object
上面**有三次解構賦值,分別是對loc、start、line三個屬性的解構賦值。注意,最後一次對line屬性的解構賦值之中,只有line是變數,loc和start都是模式,不是變數。 物件解構賦值
先賦值看看 script let console log test1 console log test2 script 簡化寫法 script let console log abc console log def script 在物件解構賦值中,順序是沒有影響的,我們修改上面的內容 script ...
物件的解構賦值
與陣列解構不同的是,物件解構不需要嚴格按照順序取值,而只要按照變數名去取對應屬性名的值,若取不到對應屬性名的值,則為undefined 基礎用法 看個簡單的例子 let a 1 b 2 let a 2 b 1 let a 3 let a undefined 注意點 若變數名和屬性名不一致,則需要修改...
物件賦值與解構賦值
1.物件解構賦值 語法 let 物件 let obj let obj console.log a,b,c let obj console.log uname,uage,uheight 物件解構賦值總結 1.屬性指的是物件中的屬性 2.如果是乙個物件中不存在的屬性,結果是undefinde 3.屬性名...