2012-05-02 8 views
17

Il seguente codice:JSHint considera una variabile for-in 'cattiva'. Cosa significa questo?

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

produce costantemente il seguente errore nel jshint:

Bad for in variable 'thing'. 

non capisco ciò che rende la 'cosa' variabile 'cattivo' - come si può vedere, si tratta di non essere usato da nessun'altra parte. Cosa dovrei fare in modo diverso per far sì che jshint non consideri questo un errore?

+9

È globale, che è sempre male (cattivo male cattivo cattivo male). Prova 'per (cosa var in cose)'. Non so se questo è il motivo dell'errore però :) –

+1

JSHint desidera che le variabili 'for in' siano definite nell'ambito locale (cioè non in una funzione esterna). È legato a questo problema: https://github.com/jshint/jshint/issues/329 – dave1010

+2

Poiché "cattivo" è così vago, ho inviato una richiesta pull a jshint in modo che affermi esplicitamente che la variabile è globale. – mikemaccana

risposta

26

Sono sempre - se non vengono dichiarati. Prova ad aggiungere var se thing non è stato dichiarato in precedenza.

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

o

var thing; 

//more code 

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

Grazie! Vorrei che jshint dicesse "Variabile non dichiarata" piuttosto che "Variabile errata": sarebbe molto più chiaro. – mikemaccana

+0

Prego! – Dutchie432

3

Ecco il tuo codice leggermente modificato, assicurarsi che tutto è dichiarata prima dell'uso.

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