jjzjj

javascript - JS函数声明: curly brace object assigned with an empty object in parameter declaration

coder 2024-07-23 原文

这是代码,

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

函数参数声明中的 { connectHOC = connectAdvanced... } = {} 是什么意思?

我知道

= {}

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

最佳答案

这是 ES2015 语法。您的函数声明结合了 Destructuring assignment具有默认值。

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

var {a, b} = {a: "foo", b: "bar"};
console.log(a); // "foo"
console.log(b); // "bar"

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

var {a = "foo", b = "bar"} = {};
console.log(a); // "foo"
console.log(b); // "bar"

当你在声明一个函数时命名参数时,你不使用 var,并且对于对象解构它是相同的:

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

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

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

关于javascript - JS函数声明: curly brace object assigned with an empty object in parameter declaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418723/

有关javascript - JS函数声明: curly brace object assigned with an empty object in parameter declaration的更多相关文章

随机推荐