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

Javascript 如何最好地传递几乎总是相同的可选函数参数,javascript,function,Javascript,Function,传递几乎总是相同的可选参数的最佳方式是什么?Javascript的parseInt函数就是一个很好的例子;基数的第二个参数是可选的,但为了避免以零开头的字符串被视为八进制,通常公认的良好做法是始终指定10作为第二个参数。很公平,所以我想知道,如何最好地处理这种情况;具体地说,我应该创建一个方便的函数,比如parseBaseTenInt(str),它只返回parseInt(str,10)?我继承了一个代码文件,其中大约有10个对parseInt的调用,没有第二个参数,创建便利函数将允许我用pars

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

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

这取决于您可能希望与便利函数一起使用的参数数量。然后,您可以为参数对象设置默认值,并且只设置在使用函数时发生变化的属性。

我们使用了很多函数,这些函数在传递的值为null时应用默认值

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

您可以使用函数中的
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"

检查
arguments.length<2
typeof base==='undefined'
typeof base!='数字'
-
base==null
是错误的测试,但由于隐式类型转换,它起作用(对于某些值的'works')。javascript中存在
未定义的
null
,这有点令人困惑-一个意思是
我不存在
(没有设置值),另一个意思是
我存在,但是不要
;)(已经设置了一个值,但它是'nothing')您可能还希望显式传递'null'以表示'give me the default',但是,特别是如果(a)一个也有默认参数的包装函数正在调用它,或者(b)之后添加额外的参数。以上是默认参数的常见JavaScript习惯用法。