2012-05-02 14 views
17

El siguiente código:JSHint considera una variable for-in 'mala'. ¿Qué significa esto?

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

consistentemente produce el siguiente error en jshint:

Bad for in variable 'thing'. 

No entiendo lo que hace que la 'cosa' variable 'malo' - como se puede ver, es no se usa en ningún otro lado. ¿Qué debo hacer de manera diferente para que jshint no considere que se trata de un error?

+9

Es global, que siempre es malo (malo, malo, malo, malo, malo). Pruebe 'for (var thing in things)'. No sé si este es el motivo del error :) –

+1

JSHint quiere que las variables 'for in' se definan en el ámbito local (es decir, no en una función externa). Está relacionado con este problema: https://github.com/jshint/jshint/issues/329 – dave1010

+2

Dado que 'malo' es tan vago, envié una solicitud de extracción a jshint para que indique explícitamente que la variable es global. – mikemaccana

Respuesta

26

Siempre son - si no están declarados. Intente agregar var si thing no se ha declarado previamente.

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

o

var thing; 

//more code 

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

Gracias! Ojalá Jshint diga 'Variable no declarada' en lugar de 'Variable mala' - sería mucho más claro. – mikemaccana

+0

¡De nada! – Dutchie432

3

Aquí está el código con ligeras modificaciones, asegurarse de que todo es declarado antes de su uso.

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