【发布时间】:2017-02-23 14:36:43
【问题描述】:
这是代码,
export function createConnect({
connectHOC = connectAdvanced,
mapStateToPropsFactories = defaultMapStateToPropsFactories,
mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,
mergePropsFactories = defaultMergePropsFactories,
selectorFactory = defaultSelectorFactory
} = {}) {...}
函数参数声明中的 { connectHOC = connectAdvanced... } = {} 是什么意思?
我知道
= {}
可能是函数参数的默认值,但是前面的大括号里面的代码有什么用呢?
【问题讨论】:
-
我还不完全确定,但第一部分 (
{ connectHOC = ……… = defaultSelectorFactory }) 不是一个对象,它是一个包含多个变量声明的块。对象会使用冒号,而不是等号。 -
它是参数默认值和解构的组合。令我们惊讶的是,我们似乎还没有在 SO 上同时涵盖这两个问题的问题,无论是那个还是我的谷歌这次都让我失望了。
-
This is close,但并不完全是骗子。 Also this。他们都解释了这里发生了什么,但从 OP 的角度来看,他们知道他们想要为解构参数分配默认值,而不是“这是什么语法”方法。
-
TL;DR: “...您可以定义一个默认值,这样您的函数就不必接受任何参数。”
标签: javascript