为什么JSLint抱怨我的JavaScript?

问题描述

|
{
   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\"
我该如何解决? 如果不是第二个错误,至少第一个错误!     

解决方法

  第52行的字符18处的问题:将\'var \'声明移至函数顶部。 由于JavaScript没有块作用域,并且悬挂了变量定义,因此Crockford建议您将所有变量定义放在作用域的顶部。   隐含全局:requestOne 19、22、25、27,XMLHttpRequest 19,文档29,输出51 由于
out
的左边没有
var
关键字,因此它将附加到
window
,本质上使其成为全局关键字。   未使用的变量:evilVariable 25 \“ onreadystatechange \”,redBull 25 \“ onreadystatechange \”,wildGoose 25 \“ onreadystatechange \”,monkeyWrench 25 \“ onreadystatechange \” 您必须在某个地方定义了变量“ 5”,并且没有使用它。 请记住,道格拉斯·克罗克福德(Douglas Crockford)是个聪明人,他的JavaScript书非常出色,但是他的话语和JSLint是一个人的建议,而不是福音。 :)