如何在不使用未定义的情况下在函数调用中指定(默认)参数

How to specify (default) parameters in function call without using undefined

在带有默认参数的 Javascript 函数中,有什么方法可以通过名称而不是函数定义中的顺序来指定传递给函数调用的参数?

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

foo(); // => 1 2 3

foo(5); // => 5 2 3

foo(b = 5); // => 5 2 3

如您所见,我可以更改我想要的默认参数,只有当我插入 undefined 代替之前的参数时:

foo(undefined, b = 5); // => 1 5 3

// which happens to be the same as

foo(undefined, 5); // => 1 5 3

我知道这在 Python 中是可能的:

def foo(a = 1, b = 2, c = 3):
    print(a, b, c)

foo(b = 5) # => 1 5 3

有没有办法在 Javascript 中做到这一点而不插入 undefined

首先,一个好的做法是将可选参数移到最后。

在您的情况下,您可以将可选参数放在一个对象中,指定您传递的对象的哪个属性,如下所示:

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

foo();

foo({b:5})