Fork me on GitHub

JSLint Error Explanations

JSLint will hurt your feelings. It's time to make them better!


Too many parameters per function ({a})

什么时候会产生这个错误?

JSHint (版本1.0.0以下) 在遇到一个函数的形参数量比maxparams选项声明的要多时,会抛出"Too many parameters per function ({a})"的错误。以下是一个我们尝试着声明一个带有三个参数的函数的例子:

为什么会产生这个错误?

这个错误是为了强调一种代码风格上的偏差。ECMAScript规范没有声明一个函数可以接受的最小或最大参数的数量(ES5 §13):

FunctionDeclaration :
    function Identifier ( FormalParameterListopt ) { FunctionBody }

FormalParameterList :
    Identifier
    FormalParameterList , Identifier

从上述引用的语法中可以看到,任意数量的形参都是符合规范的语法。但是,你可能会需要设定一个最大数量来保持代码的可读性和可维护性。一个常见的策略就是接受一个单一的参数 e.g. options, 一般会是一个包含很多属性的对象。

我们可以重写上文中的Person构造函数,接受至多两个参数以保证特定的代码风格(这不是一个很好的例子 - 你也许会想要检查settings中参数是否存在以及提供默认值):

在JSHint1.0.0及以上版本中这个警告改为了"This function has too many parameters". 更多相关的细节可以在该页面上找到。


comments powered by Disqus