为什么JSLint抱怨我的JavaScript?

时间:2011-04-15 01:29:11

标签: javascript jslint

{
   out = rogueArray[13];
   for (var arrayItem in vanWilder) 
   {

这就是我在JSLint上所说的:

Error:

Problem at line 52 character 18: Move 'var' declarations to the top of the function.

for (var arrayItem in vanWilder)

Problem at line 52 character 18: Stopping. (30% scanned).

Implied global: requestOne 19,22,25,27, XMLHttpRequest 19, document 29, out 51

Unused variable: evilVariable 25 "onreadystatechange", redBull 25 "onreadystatechange", wildGoose 25 "onreadystatechange", monkeyWrench 25 "onreadystatechange"

我该如何解决这个问题? 如果不是第二个错误,至少第一个错误!

1 个答案:

答案 0 :(得分:2)

  

第52行的问题18:将'var'声明移到函数的顶部。

由于JavaScript没有块范围,并且提升了变量定义,因此Crockford建议您将所有变量定义放在范围的顶部。

  

隐含的全球:requestOne 19,22,25,27,XMLHttpRequest 19,document 29,out 51

由于out左侧没有var关键字,因此它会附加到window,从而使其成为全局。

  

未使用的变量:evilVariable 25“onreadystatechange”,redBull 25“onreadystatechange”,wildGoose 25“onreadystatechange”,monkeyWrench 25“onreadystatechange”

您必须在某处定义变量evilVariable而不使用它。


请记住,道格拉斯·克罗克福德是个聪明人,他的JavaScript书非常出色,但是把他的话和JSLint作为一个人的建议,而不是福音。 :)