缺少间歇性值时,JavaScript函数的默认参数不起作用

时间:2014-02-09 09:33:31

标签: javascript function parameters arguments default

我已经阅读了两篇关于这个主题的类似帖子,并尝试了提供的解决方案,以便在JavaScript函数中使用参数的默认值。

如果缺少终端参数或结束参数,解决方案仍然有效,如果缺少其中一个中间参数,则代码似乎不起作用。

当我开始将我的财务函数库转换为JavaScript时,任何关于我在这方面做错了什么的暗示都会有所帮助

var tadJS = {
tadAEY: function(r, c)
{
    if (r==0.0)
        return 0.0;
    if (c==0.0)
        return Math.exp(r) - 1;
    else
    return Math.pow(1.0+r*c, 1/c) - 1;
},
tadPVIF2: function(r, n, c, p, d)
{
  var t=0.0;
  c = (typeof c !== "undefined") ? c : 1;
  p = (typeof p !== "undefined") ? p : 1;
  d = (typeof d !== "undefined") ? d : 1;
  t = (n-1)*p+d*p;
  if (r==0.0)
     return 1.0;
  return Math.pow(1.0+this.tadAEY(r,c),-t);
}
};

以下对函数的调用将在缺少最后三个参数时返回值

document.write( "PVIF(10%, 10, 1, 1, 1) = " + tadJS.tadPVIF2(0.10,10) );

当缺少第三个参数时,以下对JavaScript函数的调用不起作用

document.write( "PVIF(10%, 10, 1, 1/2, 1) = " + tadJS.tadPVIF2(0.10,10,,0.5) );

以下两个线程用作JavaScript函数

中默认参数解决方案的参考

Is there a better way to do optional function parameters in Javascript?

Set a default parameter value for a JavaScript function

1 个答案:

答案 0 :(得分:0)

它不起作用,因为,,0.5是无效的JavaScript。

有两个简单的解决方案:

  1. undefined传递给您省略的参数:

    tadJS.tadPVIF2(0.10, 10, undefined, 0.5);
    
  2. 可选择接受一个对象作为第一个参数:

    tadJS.tadPVIF2({r: 0.10, n: 10, p: 0.5});