发送单个参数与参数数组

时间:2014-10-14 02:50:55

标签: javascript php

是否存在关于将参数作为单个变量发送或将参数数组发送到函数/方法的一般良好惯例约定?

EG。

param1, param2, param3 vs array data  

如何确定两者中的哪一个使用,或两者兼而有之?

2 个答案:

答案 0 :(得分:1)

我的经验法则是,只要您有两个以上的参数,就应该切换到传递某种类型的聚合(Array,Hash,Object,Record等)。如果它是一个或两个主要参数和几个选项的情况,那么只将选项放入聚合中并将原色保留在它们自己的参数中。

答案 1 :(得分:0)

当你询问一系列参数时,我假设你在讨论的是所有相同类型(或类似类型)的参数。这实际上取决于具体情况,并且在调用者的便利性和功能实现的便利性之间有点折衷。这意味着它很大程度上取决于您最想要优化的内容。没有严格的规则,但您可以将这种思维作为指导:

在以下情况下使用单独的参数:

  1. 参数数量相对较少且通常是固定的
  2. 通过命名参数
  3. ,接收函数中的代码更加清晰
  4. 进行函数调用的典型方法不是以编程方式构建参数列表
  5. 在以下情况下使用数组:

    1. 参数的数量相对较大或通常是可变的(调用者可能想要构建一个数组并传递它)
    2. 通过在循环中处理变量参数列表来接收函数更清晰(这也可以使用arguments对象完成,但有时对于实际数组更简单)
    3. 进行函数调用的一种常用方法是从以编程方式构建的参数列表(更方便调用者只能传递数组)。
    4. 被调用函数希望能够轻松地将参数列表传递给其他函数调用。虽然可以在没有数组的情况下通过处理arguments对象来完成此操作,但如果args未在数组中传递以开始,则需要执行更多代码。
    5. 如果没有构建函数来获取数组,调用者通常可以使用.apply()解决问题,但调用者在数组中有参数。


      仅供参考(虽然我认为这不是您问题的主题),但另一种选择是传递具有可变数量属性的对象。当有许多不同的参数且大多数或全部都是可选的时,options对象特别有用。被调用的函数可以包含所有选项的默认值,调用者只需传递他们想要覆盖默认值的参数即可。对于可以在数组中或作为参数列表更好地表示的相同类型的参数的可变数量,options对象通常不是最佳解决方案。