当JSLint和JShHint遇到一个属性getter函数中含有形参时,会抛出"Unexpected parameter '{a}' in get {b} function"错误。在下面的例子中,我们创建了一个对象x并包含了一个getter和setter。其中getter会返回所设置值的一半(由于getter和setter是ECMAScript5特性,我们需要设置`es5`选项,否则JSLint会忽略之):
这个错误是为了强调一种完全无用并且潜在的让人感到困惑的代码。你的代码可以正常运行并不会产生任何错误,但是会让其他开发者感到困惑并且不必要地增加了文件的大小。
ECMAscript 5 为对象的getter和setter函数增添了新的语法。以下是标准中描述的getter的参考(ES5 §8.6.1):
The function’s [[Call]] internal method... is called with an empty arguments list to return the property value each time a get access of the property is performed.
由于在运行时getter函数永远不会被传入任何参数,所以没有必要在函数的形参列表中提供任意的参数。只需将形参删除就可以修复此错误:
在JSHint1.0.0及以上版本中,你可以通过一种特殊的语法选项来忽略之。这个警告的标示符是W076。也就是说通过/*jshint -W076 */
JSHint不会再发出警告。