Fork me on GitHub

JSLint Error Explanations

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


Unexpected parameter '{a}' in get {b} function

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

当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不会再发出警告。


comments powered by Disqus