Function 在JavaScript中使用特定的默认参数调用函数?

Function 在JavaScript中使用特定的默认参数调用函数?,function,default-parameters,Function,Default Parameters,我有一个这样的函数: function foo(a, b, c=0, d=10, e=false) { // ... } 我希望使用特定的输入调用此函数,但不一定需要在输入中按顺序列出它们。就像: foo("bar", "skurr", e=true); 我知道在python中可以这样调用函数,但对于js,似乎还有另一种方法我不知道 我尝试过输入一个对象,但没有成功,因为它只是使用对象作为函数的第一个参数 foo({a: "bar&quo

我有一个这样的函数:

function foo(a, b, c=0, d=10, e=false) {
  // ...
}
我希望使用特定的输入调用此函数,但不一定需要在输入中按顺序列出它们。就像:

foo("bar", "skurr", e=true);
我知道在python中可以这样调用函数,但对于js,似乎还有另一种方法我不知道

我尝试过输入一个对象,但没有成功,因为它只是使用对象作为函数的第一个参数

foo({a: "bar", b: "skurr", e: true});
在JavaScript中如何以这种方式调用函数?

一个选项使用了您所描述的“对象作为第一个参数”,但语法有点奇怪。考虑:

function foo({a, b=0}) { console.log(a,b); }
这定义了一个函数,该函数需要一个对象作为第一个参数,并对该对象施加结构约束。特别是,以下措施将起作用:

foo({a:1});            // output: 1 0
foo({a:1, b:2});       // output: 1 2
foo({});               // output: undefined 0
foo({a:1, b:2, c: 3}); // output: 1 2 /* c is ignored */
而以下操作将引发错误:

foo(); // TypeError: Cannot destructure property `a` of 'undefined' or 'null'
另一个选项,你经常会看到,是这样一个习惯用法:

function foo(some_object) { let {a,b} = some_object; console.log(a,b); }
这两种情况都是类似的。据我所知,这是最接近python的语法(这个答案可能给出了更多的解释,我对解释观察到的效果的形式语言进行了可能过于透彻的分析)