首页 > 解决方案 > Javascript:如何编写一个接受不同数量参数的函数

问题描述

在 JS (with Flow) 中如何定义一个函数并使用不同数量的参数调用它

假设我有一个函数,其参数是用流输入的

function fun(
  name: string,
  age?: string,
  gender: string,
  metaData?: {
    hobby: ?string,
    lifeGoal: ?string,
  }
): void {
  // do something
}

这就是我想以两种方式称呼它们的方式:

fun('Jimmy', '30', 'male', {hobby: 'ride bike', lifeGoal: 'beat Zerg'});
fun('Kerri', 'female', {hobby: 'transform', lifeGoal: 'beat Terran'});

如果我不想将“年龄”放入“元数据”,我如何确保“女性”映射到“性别”而不是“年龄”,因为它们都是字符串类型。

标签: javascriptreactjsflowtype

解决方案


这称为“重载”,不是 javascript 的功能。您可以通过允许您的函数接受一个对象作为参数来伪造它,并且您可以在该对象中填充您想要的任何内容。请参见下面的示例:

function foo(a, b, opts) {
  // ...
  if (opts['test']) { } //if test param exists, do something.. 
}


foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});`

推荐阅读