如何将对象解构为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教程: