传入不存在或未定义的函数参数?

时间:2013-06-11 12:22:29

标签: javascript

我想知道如果我的函数接受了4个参数a,b,c,d,那么最好的做法是什么,但我遇到的情况是我没有为参数传递值但是需要传递一个值对于参数:

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

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

你是否为param c传递了undefined,然后在函数内部进行检查或类似的事情?

5 个答案:

答案 0 :(得分:6)

最好是为我使用 Object

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

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

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

function myFunction( options ) {
    options = options || {};
    options.paramA = options.paramA || "defaultValue";
    // etc...
}    

答案 1 :(得分:1)

您可以在功能签名中将任何可选参数设置为最远,这样您就可以在调用该功能时将其关闭。

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

myFunction(1, 2, 3, 4);

// call without 'c'
myFunction(1, 2, 3);

答案 2 :(得分: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'; }
}

答案 3 :(得分:0)

null作为您没有的参数传递。 undefined更专业,但它们的工作方式相同。

答案 4 :(得分:0)

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

 function example(a, b, c, d) {
 if (arguments.length < 4) {
   paramC = defaultParam; // something default value for passed C
   }
 }