2012-05-02 5 views
17

次のコード:JSHintは、for-in変数 'bad'を考慮します。これは何を意味するのでしょうか?

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

は一貫jshintに次のエラーを生成します。

Bad for in variable 'thing'. 

私は「もの」変数「悪い」作るものが理解していない - あなたが見ることができるように、それはあります他の場所では使用されていません。これをエラーと見なさないようにするために、私は何をどうしたらよいですか?

+9

これは常に悪い(悪い悪い悪い悪い悪い)です。 '(物事の中にあるものについて)'を試してください。これがエラーの理由であるかどうかわからない:) –

+1

JSHintは 'for '変数がローカルスコープで定義されることを望んでいる(つまり、外部関数ではない)。この問題に関連しています:https://github.com/jshint/jshint/issues/329 – dave1010

+2

'bad'はあまりにも漠然としているので、変数がグローバルであることを明示的に示すように、私はjshintにプルリクエストを提出しました。 – mikemaccana

答えて

26

これらは常に宣言されていません。 thingが以前に宣言されていない場合は、varを追加してみてください。ここで

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

または

var thing; 

//more code 

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

ありがとう!私はjshintが 'Bad variable'ではなく '宣言されていない変数'を言うことを望みます - それははるかに明確になります。 – mikemaccana

+0

よろしくお願いします! – Dutchie432

3

は、あなたのコードはわずかに変更されている、すべてが、使用前に宣言されていることを確認してください。

var things = {'foo':'bar'}, thing; 
for (thing in things) { 
    console.log(thing) 
} 
関連する問題