指定第二个默认参数Javascript

ted*_*ted 1 javascript ecmascript-6

假设我有一个带有三个参数的函数,其中两个具有默认值:

function f(a, b=2, c=3){
    console.log(a, b, c)
}
Run Code Online (Sandbox Code Playgroud)

如果我有非常愉快b的价值,有没有办法来调用f和指定的值c直接

在Python中,我会做些什么f(1, c=5)

使用案例:如果我不知道b默认值或者如果有更多的参数,那么不能做这样的事情会很麻烦

T.J*_*der 9

有没有办法直接调用f和指定值c

不,JavaScript没有那种命名参数.

您可以调用f使用默认的b给予undefined:

f(1, undefined, 5);
Run Code Online (Sandbox Code Playgroud)

function f(a, b = 2, c = 3){
    console.log(a, b, c)
}
f(1, undefined, 5);
Run Code Online (Sandbox Code Playgroud)

或者,您可以进行f不同的定义:让它接受一个将其解构为参数的对象,然后使用对象调用它:

function f({a, b = 2, c = 3}){
    console.log(a, b, c)
}
f({a: 1, c: 5});
Run Code Online (Sandbox Code Playgroud)

如果你希望它在没有对象的情况下调用它是有效的(这是上面的错误),为destructured参数提供一个默认值:

function f({a, b = 2, c = 3} = {}){
// -------------------------^^^^^
    console.log(a, b, c)
}
Run Code Online (Sandbox Code Playgroud)