最佳实践 - 在Javascript中具有可选参数的函数

时间:2016-08-11 15:46:43

标签: javascript

我做了一些研究,我找到的最佳答案是: function overloading in js

前10个答案确实给了我一些提示和线索,但不是一般如何处理这些情况的方法。

让我们进一步提问:

如果我为其他人制作API,该怎么办?这应该给你以下问题的答案:

  • 我为什么要这样做?
  • JS并没有严格意义上的压倒一切(是的,我知道,不是重点)
  • 使用可选参数传递对象(更喜欢它,它不适合我)
  • 假设类型,固定数量的参数,单个值等的特定解决方案。

某些功能必须采用许多可选参数(以及一些非可选参数)。所以函数看起来像:

$homepage = file_get_contents('http://finance.google.com/finance/info?q=nasdaq:'.GET['qparams']);
$homepage = str_replace(array("//"," ","\r","\n"), "", $homepage);
return $homepage;
  • unoptX参数不是可选的。
  • opX参数是可选的(在某种意义上,它们可以等于固定值或值中的1个值,或者根本不传递给函数)。

因此可以通过以下任何方式调用函数:

var f = function (unopt1, unopt2, op1, op2, op3) {
 // code
}

显然,可选参数每个都可以有某些值,让我们说它们按特定顺序列出。和ofc。函数的行为取决于参数

您对此的建议方法是什么?多个很好,你可以指出某种方法的起伏是什么。

2 个答案:

答案 0 :(得分:4)

使用spread运算符作为参数:

function f(...args){
  switch(args.length){
    case 1:
    get()
    case 2:
    set()
    default:
    setWithOptions()
  }
}

答案 1 :(得分:1)

使用“选项”对象或ES6 "rest parameters"

var f = function (unopt1, unopt2, opts) {

  opts = opts || {};

  // later... if( opts.yourOptionalArg )

}

ES6休息参数

var f = function (unopt1, unopt2, ...args) {

  console.log(args)

  var firstOptionalArg = args[0];

}