如何將對象解構為JavaScript中的現有變量

我有這個問題。我正在調用一個函數來獲取一些數據:

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

const { a, b } = doSomething()

但我需要將其包裝成一個if塊僅在用戶登錄後才執行此行,從而移動const裡面的聲明if塊使這些變量在該塊之外不可見。

因此,我想先將這些變量聲明為未定義的變量,然後在輸入數據時對其進行更新。

第一部分很簡單:

let a, b

接下來是“棘手的”,因為我們刪除了const在對象分解之前,但我們還需要將所有行都包裝在括號中:

let a, b

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

if (/* my conditional */) { ({ a, b } = doSomething()) }

另外,如果您像我一樣,並且不喜歡使用分號,則需要添加分號該行,以防止出現括號問題(如果使用,Prettier也會自動為您添加):

let a, b

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

if (/* my conditional */) { ;({ a, b } = doSomething()) }

這是需要的,就像當我們有一個IIFE(immeditaly調用的函數表達式)時需要這樣做:

;(() => {
  //...
})()

防止JavaScript混淆位於單獨行中但不以分號結尾的代碼。

免費下載我的JavaScript初學者手冊


更多js教程: