ES6學習歷程 10 — 解構賦值(二)

Object Destructuring Assignment 物件解構賦值

Megan
Learn & Record
5 min readApr 6, 2021

--

Photo by Carl Heyerdahl on Unsplash

假設有一個名為person的物件,其有兩個屬性 firstName 和 lastName

在ES6之前,當你想要將person的屬性設為變數時,同常需要這麼做:

在ES6的物件解構語法中提供了另一種方法,能將物件屬性很容易地指定(assign)給變數:

firstName 和 lastName 被設為 fName 和 lName 變數。

這種語法公式為:

「:」 之前的property 是物件屬性,「:」 之後的variable是變數名稱。

如果變數的名稱與物件屬性相同,就會直接將屬性值帶入變數:

使用物件解構為變數時,若物件屬性不存在,則變數將會默認為undefined:

因 person 中沒有 middleName,故 middleName 顯示 undefined。

設定默認值

當物件的屬性不存在時,可以為變數預設默認值:

在上述範例中,當person的屬性中沒有middleName時,將middleName預設為空字串。

另外,將currentAge設為變數age,並給定默認值18。

但是,當person中確實具有middleName屬性時,middleName就不會是默認值,而是原本person物件中的值。

解構一個空物件

某些情況下,函式可能回傳一個物件或是null:

然後使用物件解構:

則出現錯誤訊息:

為避免這種情況,可以使用OR運算符( || ) 將null 預設為空物件,這樣就不會拋出錯誤了:

巢狀物件解構

假設有一個名為employee的物件,其屬性中又有一個物件(name)

接下來要解構這個name物件,使其成為單獨的變數

可以同時將多個屬性設為多個變數:

解構函參數

假設有一個函式顯示person物件:

可以像下面範例這樣,將要傳遞到函式中的物件進行解構:

--

--