4

我想知道如果我的函数接受 4 个参数 a、b、c、d 的最佳实践是什么,但我遇到的情况是我没有为参数 c 传递值但需要为参数 d 传递一个值所以:

function myFunction(a,b,c,d) {
 //...
}

myFunction(paramA, paramB, '', paramD);

您是否为参数 c 传入 undefined ,然后在函数内部进行检查或类似的事情?

4

5 回答 5

6

更好的是为我使用Object

function myFunction( options ) {
 //...
}

myFunction({
    paramA: "someVal",
    paramD: "anotherVal"
});

然后在函数中,您可以检查空参数并传递默认值:

function myFunction( options ) {
    options = options || {};
    options.paramA = options.paramA || "defaultValue";
    // etc...
}    
于 2013-06-11T12:24:12.217 回答
1

您可以使任何可选参数在您的函数签名中右侧,这样您就可以在调用函数时将它们关闭。

function myFunction(a, b, d, c) {
    // ...
}

myFunction(1, 2, 3, 4);

// call without 'c'
myFunction(1, 2, 3);
于 2013-06-11T12:25:41.233 回答
1

如果未定义为最简单/可靠的解决方案,我发现设置默认值

function myFunction(a,b,c,d) {
    if (typeof a === 'undefined') { a = 'val'; }
    if (typeof b === 'undefined') { b = 'val'; }
    if (typeof c === 'undefined') { c = 'val'; }
    if (typeof d === 'undefined') { d = 'val'; }
}
于 2013-06-11T12:31:42.433 回答
0

null作为你没有的参数传递。undefined更专业一点,尽管它们的工作方式相同。

于 2013-06-11T12:26:06.350 回答
0

如果你知道传递了什么参数,你可以使用函数的参数'arguments'。例如:

 function example(a, b, c, d) {
 if (arguments.length < 4) {
   paramC = defaultParam; // something default value for passed C
   }
 }
于 2013-06-11T13:31:36.323 回答