如何最好地传递几乎总是相同的可选函数参数

时间:2009-01-20 13:46:07

标签: javascript function

传递几乎总是相同的可选参数的最佳方法是什么?一个典型的例子就是Javascript的parseInt函数; radix的第二个参数是可选的,但是为了避免以零开头的字符串被视为八进制,通常认为总是将10指定为第二个参数是一种好习惯。很公平,所以我想知道,如何最好地处理这种情况;具体来说,我应该创建一个方便函数,例如parseBaseTenInt(str),它只返回parseInt(str,10)?我继承了一个代码文件,大约10次调用parseInt而没有第二个参数,创建便利函数后,我将允许用parseBaseTenInt简单地替换parseInt。但是我可以设想便利功能的缺点,特别是它没有被其他开发者使用。因为它现在只有1个文件,而且我将向主要开发人员前进,所以将第二个参数添加到所有parseInt函数调用中并不太不方便。

4 个答案:

答案 0 :(得分:1)

我会使用你的解决方案 - 将它包装在一个适当命名的函数中,保持它的行为/调用约定与库函数一致,并使用包装函数。

答案 1 :(得分:1)

如果传递的值为null,我们会使用很多应用默认值的函数。

// base defaults to 10
function ParseInteger(str,base)
{
    if(base==null)
        base=10;
    return parseInt(str,base);
}

答案 2 :(得分:1)

您可以使用函数内的arguments.length检查已传递的参数数量 或者,您可以使用||运算符为每个变量设置默认值:

function foo(bar, baz) {
    bar = bar || "default";
    baz = baz || 0;
    return bar + ", " + baz;
}
foo();                 // "default, 0"
foo("some string");    // "some string, 0"
foo("some string", 1); // "some string, 1"

答案 3 :(得分:0)

根据您可能想要的参数数量Introduce Parameter Object以及便利功能。然后,您可以为参数对象设置默认值,并仅设置在使用该函数时变化的属性。