2012-02-09 6 views
10

Estoy viendo el documento Code Conventions for JavaScript de Douglas Crockford, y él dice que var s debe ser alfabético, y uno por línea.Declaraciones de 'var' de línea única, o una por línea?

var a;     // array of class names 
var c = node.className; // the node's classname 
var i;     // loop counter 

Sin embargo, el jsLint (y jsHint) estándar es a declararlos en una sola línea, y se lanza este error si se hace el camino de Crockford

demasiadas declaraciones var

Por lo tanto, jsLint quiere que se haga así.

var a, c = node.className, i; 

Esto parece bastante contradictorio para mí, y aunque probablemente bastante minutos en el alcance general de la programación, estoy esperando para obtener este derecho antes de que se equivocan.

¿Cuál es la práctica generalmente aceptada al declarar JavaScript vars?

+8

Estoy votando uno por línea. – Zenexer

+2

Otro defensor de uno por línea; mucho más fácil de leer, IMO. –

+1

Si necesita organizarlos alfabéticamente, yo diría que la función es demasiado grande ... –

Respuesta

13

LINT quiere una sola declaración de declaración var, pero puede extenderse en varias líneas.

var a, b, c; 

o

var a, 
    b, 
    c; 

La razón por la que quiere una sola instrucción es para evitar cualquier confusión sobre qué variables pertenecen al ámbito local.Con una sola instrucción var, todas las variables con ámbito local están contenidas en una sola ubicación dentro del alcance y cualquiera puede leer el código rápidamente para ver cuáles son.

Se recomienda además que esta declaración de declaración esté en la parte superior del alcance, ya que el mecanismo de elevación de JavaScript los mueve allí antes de la ejecución. Al escribir su código para esperar esa declaración en la parte superior del alcance, el mecanismo de elevación no puede causar ningún comportamiento inesperado.

0

Puede declarar múltiples variables y asignarlas en la misma línea. Es una cuestión de preferencia personal.

2

El argumento es sobre todo una discusión estilo, sin embargo, es mucho más importante para ponerse de acuerdo sobre un estándar y tener su equipo de usarlo constantemente.

3

Ninguno de los dos sentidos es incorrecto, pero generalmente prefiero usar declaraciones de estilo de línea única al comienzo de un bloque de código. Lo más importante es mantenerlo constante. Ejemplo:

function() { 
    var foo = "bar", 
     number = 123, 
     etc = "..."; 

    // stuff.. 
} 
+1

Gracias @ jdc0589 esto es útil. Supongo que no debería haber dicho "me equivoco" ya que sé que ambas formas funcionan. Estoy más apuntando al método generalmente aceptado, que por la evidencia en las respuestas apunta a este enfoque con seguridad. –

3

Incluso una combinación está bien. Esto es todo sobre preferencia. Si está trabajando con un equipo, pregunte sobre la preferencia y manténgala constante.

var a, 
    c = node.className, 
    i; 
+0

ah sí, esto es muy bueno. Se adapta a ambas direcciones. No viola jsLint, y aún se adhiere al estándar de Crockford. –

2

Otra opción (que es el que yo uso) es:

var a = ..., 
    b = ..., 
    c, d; 

Esto deja claro cuántas variables de Estoy declarando y que todos están relacionados de alguna manera (ya que' m declararlos en el mismo espacio, básicamente siempre lo son). También ayuda a diferenciar entre las variables que ya tienen valores y las que no. Dicho esto, solo declaro variables sin asignar muy raramente.

A menos que esté trabajando con código que sigue un estándar diferente, esto es lo que hago. Y eso es lo más importante: siga el estilo de su proyecto. De lo contrario, vaya por su preferencia. Si realmente no te importa, utiliza mi estilo;)

+3

"lo aclara"? Yo no sigo Un vistazo rápido muestra que está declarando tres variables, ya que hay tres líneas. Sin embargo, una inspección más cercana muestra que realmente declaras cuatro. ¿De verdad crees que usar tres líneas para declarar cuatro variables es claro? –

Cuestiones relacionadas