sirve - quitar separador de miles javascript
¿Recomiendas usar punto y coma después de cada declaración en JavaScript? (11)
Creo que esto es similar a lo que discutió el último podcast. El "Sé liberal en lo que aceptas" significa que el trabajo adicional debe incluirse en el analizador de JavaScript para corregir los casos en los que el punto y coma se dejó de lado. Ahora tenemos un montón de páginas por ahí flotando con mala sintaxis, que podría romperse un día en el futuro cuando algún navegador decida ser un poco más estricto con lo que acepta. Este tipo de regla también debería aplicarse a HTML y CSS. Puedes escribir HTML y CSS rotos, pero no te sorprendas cuando tengas problemas para depurar comportamientos cuando algún navegador no interpreta correctamente tu código incorrecto.
En muchas situaciones, los analizadores de JavaScript insertarán puntos y comas si los deja fuera. Mi pregunta es, ¿los dejas afuera?
Si no está familiarizado con las reglas, hay una descripción de la inserción de punto y coma en el sitio de Mozilla . Este es el punto clave:
Si el primero a través de los n - tokens de un formulario de programa de JavaScript son gramaticalmente válidos, pero el primero a través de los n-1 tokens no lo son y hay un salto de línea entre los n- ésimo tokens y los n-1 tokens, entonces el analizador intenta analizar el programa nuevamente después de insertar un token de punto y coma virtual entre el n th y el n + 1 tokens.
Esa descripción puede estar incompleta, porque no explica el ejemplo de @ Dreas. ¿Alguien tiene un enlace a las reglas completas, o ver por qué el ejemplo obtiene un punto y coma? (Lo probé en JScript.NET).
Esta pregunta de stackoverflow está relacionada, pero solo habla de un escenario específico.
Diría que la consistencia es más importante que guardar unos pocos bytes . Siempre incluyo punto y coma.
Por otro lado, me gustaría señalar que hay muchos lugares donde el punto y coma no es sintácticamente necesario, incluso si un compresor está destruyendo todos los espacios en blanco disponibles. por ejemplo, al final de un bloque.
if (a) { b() }
El artículo mislav.uniqpath.com/2010/05/semicolons brinda algunos puntos realmente buenos acerca de no usar puntos y comas en Javascript. Se trata de todos los puntos que han sido planteados por las respuestas a esta pregunta.
Esta es la mejor explicación de la inserción automática de punto y coma que he encontrado en cualquier lugar. Despejará toda su incertidumbre y duda.
JavaScript inserta automáticamente punto y coma mientras interpreta su código, por lo que si coloca el valor de la declaración de retorno debajo de la línea, no se devolverá:
Tu codigo:
return
5
Interpretación de JavaScript:
return;
5;
Por lo tanto, no se devuelve nada debido a la inserción automática de punto y coma de JavaScript
Lo que todos parecen pasar por alto es que los puntos y comas en JavaScript no son terminadores de enunciados sino separadores de enunciados. Es una diferencia sutil, pero es importante para la forma en que el analizador está programado. Trátelos como lo que son y descubrirá que abandonarlos será mucho más natural.
He programado en otros idiomas donde el punto y coma es un separador de enunciados y también es opcional ya que el analizador hace ''inserción de punto y coma'' en líneas nuevas donde no rompe la gramática. Así que no estaba familiarizado con eso cuando lo encontré en JavaScript.
No me gusta el ruido en un idioma (que es una de las razones por las que soy malo en Perl) y los puntos y coma son ruidos en JavaScript. Entonces los omito.
No, solo use punto y coma cuando sea necesario.
Sí, debe usar punto y coma después de cada instrucción en JavaScript.
Sí, siempre debes usar punto y coma. ¿Por qué? Porque si terminas usando un compresor JavaScript, todo tu código estará en una línea, lo que romperá tu código.
Pruebe http://www.jslint.com/ ; herirá tus sentimientos, pero te mostrará muchas formas de escribir mejor JavaScript (y una de las maneras es siempre usar punto y coma).
Un caso ambiguo que se rompe en ausencia de un punto y coma:
// define a function
var fn = function () {
//...
} // semicolon missing at this line
// then execute some code inside a closure
(function () {
//...
})();
Esto se interpretará como:
var fn = function () {
//...
}(function () {
//...
})();
Terminamos pasando la segunda función como un argumento a la primera función y luego tratando de llamar el resultado de la primera llamada de función como una función. La segunda función fallará con un error "... no es una función" en el tiempo de ejecución.
Uso punto y coma, ya que es mi hábito. Ahora entiendo por qué no puedo hacer que la cuerda se divida en dos líneas ... pone punto y coma al final de cada línea.