2012-05-02 43 views
17

下面的代碼:JSHint考慮一個for-in變量'bad'。這是什麼意思?

var things = {'foo':'bar'} 
for (thing in things) { 
    console.log(thing) 
} 

一貫產生以下錯誤jshint:

Bad for in variable 'thing'. 

我不明白是什麼讓「東西」變「壞」 - 你可以看到,它是沒有被用在其他地方。我應該怎樣做才能讓jshint不認爲這是一個錯誤?

+9

這是全球性的,這總是不好(壞壞壞壞)。嘗試'for(var thing in things)'。不知道這是錯誤的原因:) –

+1

JSHint希望'for in'變量在本地範圍內定義(即不在外部函數中)。它與這個問題有關:https://github.com/jshint/jshint/issues/329 – dave1010

+2

由於'bad'非常模糊,我向jshint提交了一個pull請求,以便它明確聲明變量是全局的。 – mikemaccana

回答

26

他們總是 - 如果他們沒有宣佈。嘗試添加var如果thing以前沒有聲明過。

for (var thing in things) { 
    console.log(thing) 
} 

var thing; 

//more code 

for (thing in things) { 
    console.log(thing) 
} 
+8

謝謝!我希望jshint會說'Undeclared variable'而不是'Bad variable' - 它會更清晰。 – mikemaccana

+0

不客氣! – Dutchie432

3

這裏是你的代碼稍加修改,確保所有被使用之前聲明。

var things = {'foo':'bar'}, thing; 
for (thing in things) { 
    console.log(thing) 
}