1

JavaScript 中可以有多个可选参数吗

假设你有一个函数 dog,它接受 3 个参数,一个是必需的,两个是可选的。

dog(dogsName, [tripsOutOfTheCountry], [numberOfDoctorsVisits])

我知道您可以检查未定义,但如果此人不提供tripsOutOfTheCountry 怎么办,因为它是可选的,只提供他们认为是numberOfDoctorsVisits 的内容。

示例运行:

dog("Rusty", 10)

他们为 numberofDoctorsVisits 输入 10,将 tripsOutOfTheCountry 留空,因为它是可选的。

因此,该程序实际上似乎 tripsOutOfTheCountry 为 10,这实际上是 numberofDoctorsVisits

有什么办法可以避免这种情况。除了让用户为tripsOutOfTheCountry 输入0 之外,我认为没有其他方法可以解决这个问题。

将上面的例子修改为dog("Rusty, 0, 10)

我只是提出这个问题,因为我不知道这是否可能。

PS对不起这个老生常谈的例子

4

1 回答 1

2

在任何不支持调用时命名参数但仅在位置上传递参数的语言中,这都是同样的问题。如果你能制定一个明确的规则来识别每个参数,你就可以手动找出什么是什么;例如,如果参数具有不同的类型,如数字和函数,您可以测试分配给什么的内容,并根据它们的预期类型和顺序进行转换。许多想要公开灵活 API 的库都会这样做,例如,只需看看这个 jQuery 方法允许的变化。不过,这一切都取决于您,Javascript 根本无法帮助您。

执行此操作的常用方法是传递具有显式名称的对象:

dog({ name: 'Rusty', numberOfDoctorsVisits: 10 })
于 2015-12-18T16:36:23.090 回答