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". 更多相关的细节可以在该页面上找到。