【问题标题】:Can you have more than one optional argument in JavaScript?JavaScript 中可以有多个可选参数吗?
【发布时间】:2016-03-25 10:04:05
【问题描述】:

你能在 JavaScript 中有多个可选参数吗

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

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

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

示例运行:

dog("Rusty", 10)

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

所以该程序实际上似乎 tripsOutOfTheCountry 为 10,这实际上是 numberofDoctorsVisits

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

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

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

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

【问题讨论】:

    标签: javascript arguments optional-parameters optional-arguments


    【解决方案1】:

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

    通常的做法是传递具有明确名称的对象:

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

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 2012-12-11
      • 2014-05-11
      • 2011-08-06
      相关资源
      最近更新 更多