【问题标题】:Should a javascript function have optional arguments and also options?javascript 函数是否应该具有可选参数和选项?
【发布时间】:2014-08-02 16:26:44
【问题描述】:

我一直在使用 Meteor 框架,我注意到在文档中有些函数被声明为 function(argument, [options]),这看起来不错。但是,其他人被声明为function([argument], [options])。如果参数是可选的,那不应该意味着它是一个选项吗?

例如,Meteor.absoluteUrl 在文档中定义如下:Meteor.absoluteUrl([path], [options])[path] 周围的括号表示不必传递,将使用默认值。但是,在它下面的部分中:

Generate an absolute URL pointing to the application. The server reads from the ROOT_URL environment variable to determine where it is running. This is taken care of automatically for apps deployed with meteor deploy, but must be provided when using meteor bundle.

Arguments
path String
A path to append to the root URL. Do not include a leading "/".

Options
secure Boolean
Create an HTTPS URL.

replaceLocalhost Boolean
Replace localhost with 127.0.0.1. Useful for services that don't recognize localhost as a domain name.

rootUrl String
Override the default ROOT_URL from the server environment. For example: "http://foo.example.com"

本质上,有人能解释一下参数、参数、选项和可选之间的区别吗?

【问题讨论】:

  • 如果您想要我的支持,请在您的问题中包含一些代码或质量上下文;)
  • 如果您提供来自 Meteor 的具体示例进行讨论/评论,这将更容易回答。
  • 已编辑。 @SufiDeveloper,我一点也不关心赞成票。我想知道答案。
  • @RichLitt 没关系,如果你想得到答案,下次不要发垃圾问题。
  • @RichLitt 人们只是厌倦了低质量的问题。不了解某个主题并不意味着您不能提出优秀 问题,而这正是本网站的目的。这也不是我们必须互相牵手的地方。

标签: javascript function parameters meteor arguments


【解决方案1】:

没有参数与选项的具体定义。对我来说,当该项目更常用或更核心的功能用途(即使它是可选的)时,我会在选项上做一些参数。当它是可能影响结果的众多设置之一时,我会选择一个选项,但这些设置通常不会被使用,并且通常不是功能目的的核心(即使它们有一些效果)。

在您提供的示例中,[path] 参数对于函数的逻辑非常重要,它将显着提高代码的可读性,以便将其显示为参数,并且它可能比选项。


Javascript 中的可选参数在使用上也有一些限制。只有在可以告诉(通过检查传递的参数的类型或值),调用者对参数的意图是什么以及传递的哪个参数是函数的哪个参数时,您才能使用可选参数。

例如,您不能有一个函数接受两个可选参数并且都是布尔值或都是字符串。如果只传递了一个参数,那么您无法判断调用者打算传递两个可选参数中的哪一个。因此,有时您可能会选择一组明确的可选参数(通常具有不同的类型),然后将其他所有内容放入一个选项对象中,其中每个选项都被命名,因此没有歧义。

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2023-01-31
    相关资源
    最近更新 更多