/

如何在 JavaScript 中解構一個物件到現有變數中

如何在 JavaScript 中解構一個物件到現有變數中

我遇到了這個問題。我需要呼叫一個函式來取得一些資料:

1
2
3
4
5
const doSomething = () => {
return { a: 1, b: 2 }
}

const { a, b } = doSomething()

但是我需要將這一行程式碼包裹在一個 if 區塊中,以便只在使用者已登入時執行這行程式碼。然而,將 const 宣告移到 if 區塊內部的結果是,這些變數僅在該區塊內可見。

所以我想先宣告這些變數,初始化為未定義的變數,然後在資料到達後再更新它們的值。

第一部分很簡單:

1
let a, b

接下來是比較「棘手」的部分,因為我們需要在物件解構之前刪除 const,但也需要用括號將整行程式碼包裹起來:

1
2
3
4
5
6
7
8
9
let a, b

const doSomething = () => {
return { a: 1, b: 2 }
}

if (/\* 判斷條件 \*/) {
({ a, b } = doSomething())
}

另外,如果像我一樣不喜歡使用分號,則需要在這行程式碼之前加上一個分號,以防止可能的問題發生(如果你使用 Prettier,它也應該會自動為你加上分號):

1
2
3
4
5
6
7
8
9
10
let a, b

const doSomething = () => {
return { a: 1, b: 2 }
}

if (/\* 判斷條件 \*/) {
;({ a, b } = doSomething())
}

這是必需的,就像在以下情況下我們必須執行這樣的操作一樣:

1
2
3
;(() => {
//...
})()

這能夠避免 JavaScript 將程式碼視為單獨的一行而無需使用分號結束。