指定第二个默认参数Javascript

时间:2018-11-19 14:01:30

标签: javascript ecmascript-6

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

function f(a, b=2, c=3){
    console.log(a, b, c)
}

如果我对b的值完全满意,是否可以调用f并直接为c指定一个值?< / p>

在Python中,我会做类似f(1, c=5)的事情吗?

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

2 个答案:

答案 0 :(得分:9)

  

是否可以调用f并直接为c指定一个值?

不,JavaScript没有这种命名参数。

您可以通过提供f来使用b的默认呼叫undefined

f(1, undefined, 5);

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

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

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

如果您希望在不使用任何对象的情况下调用它是有效的(上述情况是错误的),请提供默认的结构化参数:

function f({a, b = 2, c = 3} = {}){
// -------------------------^^^^^
    console.log(a, b, c)
}

答案 1 :(得分:4)

您可以像这样传递带有命名键的对象:

    function f({a, b=2, c=3}){
        console.log(a, b, c)
    }
    
    f({b: 4})