Fork me on GitHub

JSLint Error Explanations

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


Expected parameter (value) in set '{a}' function

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

JSLint在遇到一个属性设置函数中有多个命名的参数,而其中没有一个参数是叫做value的时候,就会抛出"Expected parameter (value) in set '{a}' function"的错误。在下面这个例子中,我们创建了一个对象x,其中包含了一个getter和setter。其中getter函数会返回一半的所设置的一半(由于getters和setters是ECMAScript5中的特性,我们需要在代码中设置es5选项,否则JSLint会忽略之。):

为什么会产生这个错误?

这个错误是为了强调约定的缺失以及一种完全没有意义的代码片段。若是不改变之,你的代码会正常运行并且没有任何错误,但是对于其他开发者而言会会让他们感到困惑,并且额外增加了你的脚本的大小。

ECMAscript 5 为对象的getter和setter函数增添了新的语法。以下是标准中描述的getter的参考(ES5 §8.6.1):

The function’s [[Call]] internal method... is called with an arguments list containing the assigned value as its sole argument each time a set access of the property is performed.

因为运行时只会传递一个参数给函数,所以并没有必要在函数声明中提供多余一个的参数。方便起见,这个唯一的参数需要以value为名,因为这个参数将会被用作去设置某些变量的值。为了解决这个错误,只要将多余的参数删除并且将第一个参数命名为value:


comments powered by Disqus