为什么在使用Javascript进行销毁时使用{source:target}?

时间:2019-02-09 21:54:45

标签: javascript

为什么在Javascript中将其分解为新变量时却const {source:target} = obj,而不是相反?

我问是因为const {target:soruce} = obj会更符合......

const source = 'x';
const obj = {target:source};

...而且我会犯的错误更少。 :)

2 个答案:

答案 0 :(得分:1)

如果将其格式设置为:

 ({ source: target  } =
  { source: "value" });

尤其是对于嵌套属性:

({ source1: { source2: target  }} =
 { source1: { source2: "value" }});

答案 1 :(得分:1)

您的问题很有趣。因此,我想对此发表看法:

const {源:目标} =对象

1)双方应相等:

{ source } = object

2)因此,它们都是对象:

{ source } = object || { source: 'the value - not an alias' }

3)如果对象未定义怎么办?

const { source } // and source will hold the value

4)提取了键,而不是值

const { source as target } = object
// like we have
// export { source as target } from 'module'

5)如果使用as怎么办?

const obj = { source: { target: 'another value' } }
const { source: { target: asValue } } = obj

嵌套对象键非常困难:

const { source of target as asValue } // makes life no easier.

您能考虑我们是否使用它吗?

import { a, b, c } from 'module'

但是使用导入/导出语法只有一个注意事项。

import { a, b, c } from 'module', 'another-module', 'third-module'

但不是:

.call()

希望,现在这很有意义!

如果实际上您在使用解构语法感到困惑,那么您可能会看到并遵循我的another post中提供的链接。