2012-09-30 24 views
5

¿Los comentarios literalmente simplemente se eliminan de su fuente antes del análisis, o pueden contar como saltos de línea e interrumpir la continuidad en ciertos contextos?¿Los comentarios son 100% seguros en todos los entornos principales?

'foo'.replace(/f/, 'b') //f->b 
    .replace(/o/, 'a') //o->a 
    .replace(/o/, 'r') /*o->r*/ ; 

'foo'.replace(/x/, /*matches "x"*/ 'y'); 

var foo = (true !== false) ? // bikeshed 
      'bar' : /*if they're equal, which they won't be, we'll want 'baz'*/ 'baz'; 

Usted sabe, porque ellos dicen espacio en blanco es "seguro" y "insignificante" o lo que sea, pero todos sabemos que hay excepciones a esto. ¿Los comentarios en realidad son seguros?

+0

Supongo que sí, a menos que haya errores de análisis en el compilador/analizador que está utilizando ... – techfoobar

+0

Pregunta épica, lo que significa que se ha preguntado antes. ¿Lo tiene? –

+3

Sea cual sea el resaltador de sintaxis SO markdown, ¿qué sucederá – qwertymk

Respuesta

5

Se ignoran durante el análisis, si se eliminaron antes de analizar, el analizador necesitaría escanear la entrada dos veces.

Sin embargo, LineTerminator al final de la línea no se considera para formar parte del comentario de una sola línea; se reconoce por separado por la gramática léxica y se convierte en parte de la corriente de los elementos de entrada para la gramática sintáctica. Este punto es muy importante, ya que implica que la presencia o ausencia de una sola línea Comentarios no afectan el proceso de inserción automática y coma

ES5 Specification for comments.

El código fuente se muestra como si los comentarios no existieran.

+1

Es 'abc/* Un comentario */def' uno identificador (' abcdef') o dos ('abc' seguido de' def')? –

+0

¿Puede citar una fuente, por favor? – wwaawaw

+0

Gran pregunta, @j_random_hacker – wwaawaw

3

Sí, los comentarios son seguros.

(Dicho esto, he visto algunos mineros de HTML del lado del servidor rotos que no saben qué es JavaScript en línea, y elimina todos los saltos de línea. Un comentario que comienza con // comenta todo el guión).

+0

Aceptaré esto en 10 minutos o lo que sea si puede citar cualquier tipo de fuente. – wwaawaw

+1

@adlwalrus, Mi fuente es que en 15 años, no he visto un navegador que estropee los comentarios de JavaScript. Si no quieres confiar en eso, entonces bien. La respuesta de Alex es mejor de todos modos, con su explicación. – Brad

+1

@adlwalrus, si desea la especificación: http://ecma-international.org/ecma-262/5.1/#sec-7.4 – Brad

Cuestiones relacionadas