2009-02-11 21 views
17

Solo he escrito una pequeña cantidad de JavaScript que se ejecuta incrustado en una aplicación Java, pero se probó usando QUnit, se ha mezclado y todavía no he notado ningún problema.¿Debo usar punto y coma en JavaScript?

¿Existe algún conocimiento convencional acerca de si se debe usar punto y coma o no en JavaScript?

+1

Recopilé una lista de casos en los que es importante utilizar un punto y coma [aquí] (http: // stackoverflow.com/questions/25088708/what-rules-must-i-follow-to-write-valid-javascript-without-punto-comas). Algunos argumentos para omitir el punto y coma se pueden encontrar [aquí] (http://softwareengineering.stackexchange.com/questions/142086/why-the-recent-shift-to-removing-omitting-semicolons-from-javascript). Hay un paquete de estilo de código llamado [standardjs] (https://standardjs.com/awesome.html) que elimina el punto y coma. – joeytwiddle

Respuesta

23

Úselos. Úselos constantemente.

Es demasiado fácil que algo se rompa más tarde porque omitió un punto y medio y perdió el espacio en blanco que lo había guardado anteriormente en un análisis de compresión/generación/evaluación.

+4

¿Huh? 'function foo() {} foo()' funciona bien. Los puntos y comas solo son necesarios después de expresiones de funciones, no declaraciones de funciones como en su ejemplo. –

+1

Tienes algo de un punto. El ejemplo * puede * funcionar porque los motores de JavaScript modernos son muy * muy * buenos e insertan puntos y comas virtuales donde * deberían * existir, pero se supone que el ejemplo falla por especificación y lo hará en navegadores más antiguos, lo que es cierto problema cada vez menor, pero también debe tener en cuenta que un día podemos experimentar un movimiento XHTML-esque hacia los estándares y ¿todavía está escribiendo
? – annakata

+5

Ese ejemplo se supone ** ** no fallar por espectrometría (ver ECMA-262, 3ª Ed. Ch.13) que va a hacer el trabajo en los navegadores antiguos (probado en IE5.5, un navegador de 1999), y no tiene nada que ver con ** ** la inserción automática de punto y coma (ECMA-262 Sec. 7.9), que pasa sólo por la sentencia vacía * *, * sentencia de variable *, * declaración de la expresión *, * do-while declaración *, * instrucción continue *, * declaración break *, * instrucción return *, y * instrucción throw * no se realiza inserción de punto y coma en ** declaraciones de función ** (utilizando la * declaración de función *). – CMS

6

Yo diría usarlos todo el tiempo; la mayoría del código que encontrarás los usa, y la coherencia es tu amigo.

1

La idea básica de los puntos y comas es decirle al navegador que acabas de terminar un comando. Deberías usarlos.

5

Si no los usa y luego minify su código puede tener problemas con todo su código en una sola línea y el navegador no capta completamente qué comando finaliza donde.

+2

En realidad no. Cualquier minificador estándar moderno funciona mediante el uso de un lexer/analizador sintáctico y mantiene intacto el Árbol de sintaxis abstracta del programa. Si un minificador elimina un token de salto de línea, lo reemplazará con un token de punto y coma gramaticalmente equivalente en la misma línea. (Mi primera afirmación es algo falsa: los minificadores también reducen el Árbol de sintaxis abstracta, pero aún lo mantienen lógicamente equivalente). Vea esta demostración de minificación: http://esprima.org/demo/minify.html. También es fácil aprender las situaciones en las que necesitas punto y coma JS: http://inimino.org/~inimino/blog/javascript_semicolons – johnsimer

3

Úselos. Hay algunas razones por las que, sobre todo

  1. JavaScript minifiers/compresores
  2. Las excepciones a la regla de que una nueva línea es una nueva expresión (por ejemplo, terminación de una línea con una variable y el inicio del siguiente con un paréntesis , ).)
4

Siempre promuevo el uso de punto y coma al escribir JavaScript. A menudo, el intérprete podrá inferirlos por usted; pero todavía tengo que ver una razón (aparte de la pereza ;-)) por la cual deliberadamente escribirías tu código de una manera menos precisa que la posible.

En mi opinión, si la estructura del código es obvia, será realmente claro dónde van los puntos y comas, de modo que ni siquiera tendrá que pensar en ello después de haber adquirido el hábito (es decir, al final de cada línea); por otro lado, si no queda inmediatamente claro dónde va el punto y coma, entonces es probable que la estructura no sea la más obvia de todos modos, y se necesitan puntos y coma explícitos allí más que en cualquier otro lugar.

También le da la costumbre de comprender y delimitar declaraciones en su cabeza, por lo que tiene una mejor comprensión (marginalmente) mejor de cómo su código puede analizar en un AST o similar. Y eso tiene que ser algo bueno al depurar errores de sintaxis.

6

Son requeridos por el ECMAscript standard, ver sección 7.9 - es solo que el estándar define algunas reglas que les permiten insertarse automáticamente al analizar el script.

¡Siempre utilícelos!

2

El punto y coma activa la sangría automática en mi editor. Buena razón para que lo use siempre.

Y sí, la coherencia también.

Cuestiones relacionadas