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

Can you have more than one optional argument in JavaScript?

JavaScript

中可以有多个可选参数吗

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

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

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

示例运行:

dog("Rusty", 10)

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

所以实际上程序看起来 tripsOutOfTheCountry 为 10,这实际上是 numberofDoctorsVisits

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

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

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

P.S。抱歉这个老生常谈的例子

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

通常的做法是传递具有显式名称的对象:

dog({ name: 'Rusty', numberOfDoctorsVisits: 10 })