2011-04-15 154 views
2
{ 
    out = rogueArray[13]; 
    for (var arrayItem in vanWilder) 
    { 

這是什麼,我告訴上的JSLint:爲什麼JSLint抱怨我的JavaScript?

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" 

如何我會解決這個問題? 如果不是第二個錯誤,至少第一個錯誤!

+0

我相信你只需要把你的變量定義'var arrayItem'放在當前範圍的頂部? – 2011-04-15 01:33:06

回答

2

問題在第52行字符18:將'var'聲明移動到函數的頂部。

由於JavaScript沒有塊範圍,並且變量定義被掛起,所以Crockford建議您將所有變量定義放在範圍的頂部。

隱含全球:requestOne 19,22,25,27,XMLHttpRequest的19,原稿29,出51

因爲out沒有var關鍵字的左側,它會附着在window,實質上是一個全球性的。

未使用的變量:evilVariable 25 「的onreadystatechange」 紅牛25 「的onreadystatechange」,wildGoose 25 「的onreadystatechange」,monkeyWrench 25 「的onreadystatechange」

你一定是什麼地方定義的變量​​並沒有使用它, 。


記住,道格拉斯克羅克福德是個聰明人,他的JavaScript書是優秀的,但相信他的話,並作爲JSLint的一個人的建議,而不是福音。 :)

+0

那麼,我到底在哪裏把var? – Amanda 2011-04-15 01:35:00

+0

@Amanda你應該像下面這樣定義你的變量:'var scopedVariable ='Hello';'。 – alex 2011-04-15 01:36:34

相關問題