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