Javascript:指定第二个可选参数而不指定第一个

时间:2017-09-12 22:36:31

标签: javascript optional-arguments

我正在尝试创建一个具有多个可选参数的函数。然后我试图只分配第二个参数而不必分配第一个参数。

function foo(bar, zar) {
  bar = bar || 5;
  zar = zar || 2;

  return bar * zar;
}

foo()      //10
foo(7)     //14
foo(7, 3)  //21
foo(zar=5) //10 <-- why is this not 25?

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

恕我直言,处理这种情况的最简单方法是使用参数的对象,通过ES6语法使用默认字段值。

function foo({ bar = 5, zar = 2 } = {}) {
  console.log(bar * zar);
}

foo() //10
foo({ bar: 7 }) //14
foo({ bar: 7, zar: 3 }) //21
foo({ zar: 5 }) //25

供参考,请参阅:Default parametersObject destructuring

答案 1 :(得分:0)

您可以将undefined传递给您想要用作默认值的任何参数。

foo(undefined, 5);

另外,如果你可以自由使用ES6,你可以稍微简化你的功能并声明你的可选参数:

function foo(bar = 5, zar = 2) { }

答案 2 :(得分:-1)

使用void 0代替您不想提供的参数。

例如: foo(void 0,zar=5);

任何未填充的参数都是undefined

如果不传递第一个参数,则无法传递第二个参数,但可以传递undefined。 在该函数中,您可以检查undefine d并替换为默认值。

或者,您可以使用object参数来模仿关键字参数。