物件的解構賦值

2021-08-26 09:30:25 字數 1252 閱讀 2504

物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。

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.屬性名...