Fork me on GitHub

JSLint Error Explanations

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


Variable {a} was not declared correctly

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

JSLint和JSHint (2.1.4版本之前)在遇到一个多于一个的行内等式时会抛出"Variable {a} was not declared correctly"的错误。在这个例子中,我们尝试着将一个字符串变量赋给变量x, y and z:

为什么会产生这个错误?

提出这个错误是为了强调一种可能的、缺少对语言理解。一种相对常见的初学者错误就是用以上代码来同时声明并将一个值赋给多个变量。但是,上述代码实际上合下面的这段代码是一模一样的:

问题就此变得很显而易见。我们实际上只声明了一个变量而不是三个。yz是对于那些在其上一级作用域中的变量的引用,或者会被作为全局对象的属性而创建(假设代码不在严格模式下运行)。

如果你想要声明多个变量,可以使用逗号将它们隔开:

在JSHint 1.0.0及以上版本中你可以通过一种特殊的语法来忽略所有的警告。由于这个消息(错误地)与错误而不是警告相关,所以你无法禁用之。

在JSHint2.1.4中,这个错误已经变为You might be leaking a variable ({a}) here",所以更多的细节可以在该消息的页面中找到。


comments powered by Disqus