2011-05-20 8 views
20

tengo:inesperado 'continuar'

while (i < l) { 
    if (one === two) { continue; } 
    i++; 
} 

Pero JSLint dice:

Problema en la línea 1 carácter 20: Unexpected 'continuar'.

if (one === two) { continue; } 

¿Qué error cometí? ¿Cómo debe mi código realmente mirar?

+3

Me enseñaron originalmente a evitar este tipo de flujo de control con 'continue'. Decidí que era un mal consejo, y creo que es una opción mejor desactivada en JSLint. Creo que ** no * usarlo oscurece la intención. Si utilizas un 'continuar' como lo hiciste, me dice que aquí hay una condición protegida que debes evitar. De lo contrario, invierte la lógica y anida todo lo que se ejecutará bajo un if. Esto solo agrega refuerzo adicional y ruido de indentación en el código. – Tod

+0

Vea también: http://stackoverflow.com/questions/16613790/jslint-error-expected-ignore-and-instead-saw-ex –

Respuesta

23

De the JSLint docs:

continue Declaración

Evitar el uso de la instrucción continuar. Tiende a oscurecer el flujo de control de la función.

Así que sáquelo completamente si quiere cumplir con las convenciones que sigue JSLint.

+6

+1 Este es un cambio algo reciente en JSLint, que solía permitir continuar antes. Ahora hay una opción continuar: verdadero para tolerar el uso de continuar. –

+0

qué usar en lugar de continuar? no return – asifg

+2

Hace poco actualicé varios proyectos para cumplir con esta nueva restricción: típicamente, incluiría el código restante en el bucle en un si con la condición opuesta. El impacto fue bastante limitado en nuestro caso, pero tiendo a encontrar la versión alternativa usando continue more legible y consideré agregar continue: fiel a mi configuración de JSLint para mantener el código tal como está. –

10

Lo JSLint trata de decir en realidad es invertir el caso para que pueda eliminar la siguen:

while (i < 1) { 
    if (one !== two) { 
     i += 1; 
    } 
} 

Además, no utilice "i ++", pero el uso de "i + = 1", si desea atenerse a las estrictas guías de JSLint.

Espero que esto ayude :)