【问题标题】:Default parameter of a JavaScript function is not working when intermittent value is missing缺少间歇值时,JavaScript 函数的默认参数不起作用
【发布时间】:2014-02-09 09:33:31
【问题描述】:

我已经阅读了关于该主题的两篇类似的帖子,并尝试了提供的解决方案,以在 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

【问题讨论】:

    标签: javascript function parameters arguments default


    【解决方案1】:

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

    有两种简单的解决方案:

    1. 为您省略的参数传递undefined

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

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

    【讨论】:

    • 感谢您的澄清,您的两个解决方案都非常有效。但是,我将不得不使用第一个选项,即为参数的缺失值放置“未定义”。这是因为 PVIF 函数在其他函数中被迭代使用,而对象接口会使编写此类函数变得更加麻烦。
    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多