JS函数声明:在参数声明中赋予空对象的花括号对象

Man*_*hen 7 javascript

这是代码,

export function createConnect({
    connectHOC = connectAdvanced,
    mapStateToPropsFactories = defaultMapStateToPropsFactories,
    mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,
    mergePropsFactories = defaultMergePropsFactories,
    selectorFactory = defaultSelectorFactory
} = {}) {...}
Run Code Online (Sandbox Code Playgroud)

什么{connectHOC = connectAdvanced ...} = {}意味着在函数参数声明中?

我知道

= {}
Run Code Online (Sandbox Code Playgroud)

可能意味着函数参数的默认值,但是前面括号内代码的用法是什么?

Aur*_*ílý 8

这是ES2015语法.您的函数声明将Destructuring赋值与默认值组合在一起.

这是使用对象的基本解构赋值:

var {a, b} = {a: "foo", b: "bar"};
console.log(a); // "foo"
console.log(b); // "bar"
Run Code Online (Sandbox Code Playgroud)

您可以在左侧添加默认值:

var {a = "foo", b = "bar"} = {};
console.log(a); // "foo"
console.log(b); // "bar"
Run Code Online (Sandbox Code Playgroud)

在声明函数时命名参数时,不要使用var,并且使用对象解构时它将是相同的:

function test({a = "foo", b = "bar"}){
    console.log(a + b);
}
test({}); // "foobar"
test({b: "boo"}); // "fooboo"
Run Code Online (Sandbox Code Playgroud)

当然,您可以定义一个默认值,这样您的函数就不必采用任何参数.

function test({a = "foo", b = "bar"} = {}){
    console.log(a + b);
}
test(); // "foobar"
Run Code Online (Sandbox Code Playgroud)