将包含在对象内的参数赋予函数是个坏主意吗?

时间:2012-06-20 18:53:37

标签: javascript performance function arguments

通常,随着我的代码库的增长,函数会收到越来越多的参数,并且维护变得有点草率,所以我通常只是默认为这样:

f = function(args){return args.v + 1;}

f({"v":2});

看起来更干净,但可以吗?为什么不是每个人都这样做?

3 个答案:

答案 0 :(得分:5)

通常,如果函数占用太多参数,则可能做得太多。您应该考虑将其重构为较小的函数/对象。

鲍勃叔叔在他的“清洁代码”一书中建议使用极少参数的函数,我同意。当您有许多参数或传入对象或数组时,很难读取代码。如果你在没有读取函数主体的情况下传入一个对象,我无法猜测函数将对所有参数或它作为参数的期望做什么。

答案 1 :(得分:1)

“它看起来更干净,但可以做到吗?”

“为什么不是每个人都这样做?”

他们不是吗?这是Javascript中最常见的“多参数”情况的标准做法:传递选项。由于在Javascript中创建一次性对象没有任何开销,因此当您有多个参数时,通常会这样做。

答案 2 :(得分:0)

没关系 - 只要您对作为变量传递的对象类型保持良好的控制,并根据需要验证这些值(考虑“false”/ null / undefined类型问题)然后是,这是一种很好的做法。也更容易维护。