Javascript跳过函数调用中的参数

Vee*_*ee6 7 javascript

javascript初学者在这里.

假设我有一个带有3个参数的javascript函数:

function f(arg1, arg2, arg3) { // do stuff }
Run Code Online (Sandbox Code Playgroud)

我知道我可以调用f(value1,value2); 在这种情况下,函数范围内的arg1将为value1,arg2将为value2,arg3将为null.

这一切都还不错.但是,如果我想调用只给出值的函数arg1,arg3我需要做这样的事情:f(value1, null, value2);

有没有一种方法可以指定哪些参数以更C#的方式具有哪些值(没有指定给定的参数为null)?这样的事情:仅用于为f调用f arg1,arg3我会写f(value1, arg3 = value2);

有任何想法吗?干杯!

Man*_*jar 10

有一种我见过的方式:

例如

function person(name,surname,age)
{
...
}

person('Xavier',null,30);
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

function person(paramObj)
{
   var name = paramObj.name;
   var surname = paramObj.surname;
   var age = paramObj.age;
}
Run Code Online (Sandbox Code Playgroud)

像这样打电话:

person({name:'Xavier',age:30});
Run Code Online (Sandbox Code Playgroud)

我认为这是你能够做到的最接近的事情,就像在c#中一样,JS没有被编译,所以你无法预测函数的参数.


小智 5

是的你可以。可以写成:

f(arg1, undefined, arg3);
Run Code Online (Sandbox Code Playgroud)

在这个调用中,参数 1 和 3 将通过,而参数 2 不会被发送。

  • 参数 2 将被发送,它的值为“undefined” (5认同)

Geo*_*rge 3

如果你打算这样做(假设它是有效的)

f(value1, arg3 = value2)
Run Code Online (Sandbox Code Playgroud)

那么参数 2 将是未定义的,所以只需传递它:

f(value1, undefined, value2)
Run Code Online (Sandbox Code Playgroud)