传递值以使用多个默认参数运行



考虑一个具有 3 个(任意(参数的函数,其中两个具有默认值:

const foo = (a, b=1, c=2) => {
console.log(a,b,c);
}

现在,我希望参数b具有其默认值,参数c具有我传递的值。我做了这样的事情:

foo(0, c = 10); // Ideally, a = 0, b = 1, c = 10

但该函数的输出是:

0 10 2

因此,值 10 被传递到参数b而不是c。为什么即使在我显式传递 c 的值之后也会发生这种情况?实现我想做的事情的正确方法是什么?

您需要将undefined作为参数传递,以便采用默认值。

const foo = (a, b=1, c=2) => {
console.log(a,b,c);
}
console.log(foo(1))
console.log(foo(1, undefined,25))

对于您尝试传递的签名类型,请考虑始终传递对象并解构

const foo = ({ a, b=1, c=2 }) => {
console.log(a,b,c);
}
console.log( foo({ a: 1 }) )
console.log( foo({ a: 2, c: 5 }) )

最新更新