validador sintaxis script online jshintrc javascript jslint

javascript - sintaxis - ¿Por qué se introdujeron los nuevos errores de JSLint "espacios de uso, no pestañas" y "carácter inseguro"?



sintaxis js online (4)

Bueno, parece que Douglas Crockford acaba de hacer que muchas más personas se cambien a JSHint. Echa un vistazo a este compromiso .

Se eliminó el error "Espacios y tabulaciones mixtas" y se agregó un nuevo error "Usar espacios, no tabulaciones" en su lugar. Aparte de eso, hay un pequeño cambio en esa diferencia que muestra la causa de esto. La siguiente línea (comentario añadido):

at = source_row.search(/ /t/); // ^ Space

ha sido reemplazado con esto:

at = source_row.search(//t/); // ^ No space!

Después de esa búsqueda hay una declaración if . Si la condición se evalúa como true , se emite la advertencia "Use espacios, no tabulaciones". Aquí está esa declaración:

if (at >= 0) { warn_at(''use_spaces'', line, at + 1); }

Espero que esto sea solo un pequeño descuido de Crockford. Como puede ver, JSLint ahora mostrará esta advertencia si usa un carácter de tabulación en cualquier lugar . Desafortunadamente, sus mensajes de confirmación son completamente inútiles y la documentación no parece haber sido actualizada, por lo que no puedo hacer otra cosa que especular sobre las razones detrás de este cambio.

Le sugiero que abandone JSLint y cambie a JSHint ahora mismo.

He estado validando mi JavaScript usando JSLint por cerca de 2 años y de vez en cuando hay reglas que cambian. En general, cuando JSLint introduce una nueva regla, hay una casilla de verificación para ignorar esta regla al analizar, o si decide no ignorarla, entonces haga que su código sea compatible con ella.

Sin embargo, como estaba ejecutando mi validación JSLint hoy, me encuentro con estos dos nuevos errores:

Usa espacios, no pestañas.

Este no es el error de "mezcla de tabulaciones y espacios". Estoy usando solo pestañas Esta es una versión recientemente modificada de "mezcla de pestañas y espacios" que ahora no permite las pestañas en general.

Y:

Carácter inseguro.

* /

Carácter inseguro.

_const: {

No hay nuevas opciones para ignorar. No puedo entender lo que no es seguro acerca de cerrar un comentario en bloque, por qué considera _const: {como inseguro cuando tengo nomen: true , (colgando _ en los identificadores) o por qué debo cambiar repentinamente de espacios a pestañas, cuando todavía tengo el Configuración sobre sangría de 4 espacios siendo una pestaña.

¿Alguien tiene una idea de por qué se introdujeron al menos cómo hacer que JSLint ignore estas nuevas reglas?

Actualización: Messy White Space opción Messy White Space soluciona el problema pero causaría otro comportamiento inesperado:

if (condition) { // ^-- there is a space but it won''t indicate an error


Dependiendo de su editor / IDE puede ajustar cómo funciona TAB.

Por ejemplo, yo uso texto sublime. Cerca de la esquina inferior derecha hay un tamaño de pestaña: 4.

Hice clic en él y lo puse ''Sangría usando espacios''.

Esto actualizó todas mis pestañas para usar espacios y los errores de JSLint desaparecieron. Intento usar la menor cantidad de opciones posibles con JSLint, ya que quiero que mi código esté bien estructurado.

También utilizo JSFormat, que será una pestaña basada en la configuración de mis editores, así que cuando termine, ejecuto mi JSFormat y luego JSLint. No hay errores = chico feliz!

Espero eso ayude.


Para responder por qué JSLint ahora da un error sobre las pestañas, http://www.jslint.com/help.html da esta justificación:

Las pestañas y los espacios no deben mezclarse. Deberíamos elegir solo uno para evitar los problemas que surgen de tener ambos. La preferencia personal es un criterio extremadamente poco fiable. Ninguno ofrece una ventaja poderosa sobre el otro. Hace cincuenta años, la pestaña tenía la ventaja de consumir menos memoria, pero la Ley de Moore ha eliminado esa ventaja. El espacio tiene una clara ventaja sobre la pestaña: no hay un estándar confiable para la cantidad de espacios que representa una pestaña, pero se acepta universalmente que un espacio ocupa un espacio. Así que usa espacios. Puede editar con pestañas si es necesario, pero asegúrese de que haya espacios nuevamente antes de confirmar. Tal vez algún día finalmente obtengamos un estándar universal para las pestañas, pero hasta que llegue ese día, la mejor elección son los espacios.

Esencialmente, quiere que todos lleguen a un consenso sobre si usar pestañas o espacios para evitar que se mezclen. Decidió que la consistencia del ancho de un espacio lo convierte en la opción superior, por lo que todos debemos usar eso. Claramente, algunas personas no estarán de acuerdo con esta línea de pensamiento (yo incluido), pero esa es la razón por la que JSLint lanza ese error.


Puede suprimir el error haciendo clic en la opción "espacio en blanco desordenado".