Javascript 如何使用带可选参数命名的Apply调用函数?

Javascript 如何使用带可选参数命名的Apply调用函数?,javascript,node.js,apply,optional-parameters,Javascript,Node.js,Apply,Optional Parameters,使用此函数def:myFunc(p1,p2,p3=3,p4=4){//do something} 我知道您可以使用Apply调用函数, 如下所示:myFunc.apply([1,2]) 其中1为p1,2为p2 但是在指定特定的可选参数名称时,如何使用apply: myFunc(1,2,p4=>5) 谢谢 与直接调用它的方式相同。调用函数时,若要跳过默认参数,请传递undefined: myFunc(1, 2, undefined, 4); 您可以使用apply执行相同的操作,只需在希望输入默认

使用此函数def:
myFunc(p1,p2,p3=3,p4=4){//do something}

我知道您可以使用
Apply
调用函数, 如下所示:
myFunc.apply([1,2])

其中1为p1,2为p2

但是在指定特定的可选参数名称时,如何使用
apply

myFunc(1,2,p4=>5)


谢谢

与直接调用它的方式相同。调用函数时,若要跳过默认参数,请传递
undefined

myFunc(1, 2, undefined, 4);
您可以使用
apply
执行相同的操作,只需在希望输入默认参数时传入
undefined

函数myFunc(p1,p2,p3=3,p4=4){ 控制台日志(“p1:”,p1); console.log(“p2:,p2”); 控制台日志(“p3:”,p3); console.log(“p4:,p4”); }
myFunc.apply(空[11,22,未定义,44]);//跳过p3,方法与直接调用p3相同。调用函数时,若要跳过默认参数,请传递
undefined

myFunc(1, 2, undefined, 4);
您可以使用
apply
执行相同的操作,只需在希望输入默认参数时传入
undefined

函数myFunc(p1,p2,p3=3,p4=4){ 控制台日志(“p1:”,p1); console.log(“p2:,p2”); 控制台日志(“p3:”,p3); console.log(“p4:,p4”); }
myFunc.apply(空[11,22,未定义,44]);//在JavaScript中跳过p3,以传递传递对象所需的特定命名参数。您可以使用来获得所需的结果

{p1: 1, p2: 2, p4: 5}
函数myFunc({p1,p2,p3=3,p4=4}{console.log(p3);}

myFunc.apply(null,[{p1:1,p2:2,p4:5}])在JavaScript中传递特定的命名参数,您需要传递一个对象。您可以使用来获得所需的结果

{p1: 1, p2: 2, p4: 5}
函数myFunc({p1,p2,p3=3,p4=4}{console.log(p3);}

myFunc.apply(null,[{p1:1,p2:2,p4:5}])Javascript没有命名参数(包括ES6)。因此,正如您所猜测的,您只能对位置参数使用
apply
,因此无法按您想要的方式使用
apply

在ES6中,模拟命名参数的一种方法是使用对象,例如:

myFunc({ from=3, to=5 });
使用上述技术并应用的示例(ES6):


您可以在这里阅读更多内容:

Javascript没有命名参数(包括ES6)。因此,正如您所猜测的,您只能对位置参数使用
apply
,因此无法按您想要的方式使用
apply

在ES6中,模拟命名参数的一种方法是使用对象,例如:

myFunc({ from=3, to=5 });
使用上述技术并应用的示例(ES6):


您可以在此处阅读更多内容:

JavaScript首先没有命名参数
p4=>5
是一个箭头函数,是
function(p4){return 5;}
的缩写。JavaScript首先没有命名参数
p4=>5
是一个箭头函数,是
function(p4){return 5;}
的缩写。看起来像是您从中复制了该示例,并更改了函数名。您可能应该添加属性。我在试图确保他的语法不存在时也遇到了它,当我阅读您的答案时,它仍然在我的屏幕上。:)看起来您从中复制了该示例,并更改了函数名。您可能应该添加属性。我在试图确保他的语法不存在时也遇到了它,当我阅读您的答案时,它仍然在我的屏幕上。:)如果投反对票的人能解释为什么我会很感激。我认为他们这样做可能是因为这是一个重复的问题,但我显然没有意识到,否则我就不会回答。这并没有使我的回答变得不那么有效。是的!这就是我需要的。如果投反对票的人能解释为什么我会很感激。我认为他们这样做可能是因为这是一个重复的问题,但我显然没有意识到,否则我就不会回答。这并没有使我的回答变得不那么有效。是的!这正是我需要的。我的答案也是如此。我敢肯定,这只是在不知不觉中回答了一个愚蠢的问题。shrug@zfrisch就连法比奥的回答和问题本身也遭到了否决。这个问题不再被标记为重复,因为我已经重新打开了它。否决票是在之后发生的,所以我想这只是一个连续的否决票。为了简单起见,我喜欢这个。但我选择了sfrisch答案,因为它只允许我传递我需要传递的东西,没有其他东西,也就是说,没有未定义的。我的答案也发生了同样的事情。我敢肯定,这只是在不知不觉中回答了一个愚蠢的问题。shrug@zfrisch就连法比奥的回答和问题本身也遭到了否决。这个问题不再被标记为重复,因为我已经重新打开了它。否决票是在之后发生的,所以我想这只是一个连续的否决票。为了简单起见,我喜欢这个。但我会选择sfrisch答案,因为它只允许我传递我需要传递的信息,而不允许传递更多信息,也就是说,没有未定义的信息。