2012-03-19 23 views
30

Estaba usando JSLint y recibí un error al poner un espacio después del nombre de la función. ¿Por qué es eso malo?El espacio después del nombre de la función es incorrecto?

function coolness() { 
    var hi = "this"; 
} 

ERROR: Problema en la línea 1 carácter. 19: espacio inesperado entre la 'frialdad' y '('

+0

Es malo porque cierto anciano malhumorado estaba de mal humor cuando escribió jslint, como lo estarás constantemente si continúas usándolo. –

+0

Las convenciones ayudan a mantener el código más legible. La consistencia entre muchas de esas funciones es esencial. – Gherman

Respuesta

38

JSLint no es un comprobador de sintaxis Javascript tanto como lo es un corrector de estilo Javascript. Las pautas de estilo que utiliza son las escritas por Douglas Crockford.

Algunas personas no están de acuerdo con sus decisiones sobre el estilo, algunas personas sí. No son ley y no se requiere que los sigas. Existen linters JS alternativos como JSHint.

La regla particular está ejecutando en es:

There should be no space between the name of a function and the (left parenthesis) of its parameter list.

Javascript no es sensible a los espacios en blanco. Puedes agregar este espacio si te hace sentir mejor. (No es estándar, sin embargo)

+0

Oh, bien. ¡Gracias por la información! – supercoolville

10

Por favor, compruebe los convetions de código JavaScript abajo y encontrará su respuesta

http://crockford.com/javascript/code.html#function

There should be no space between the name of a function and the ((left parenthesis) of its parameter list. There should be one space between the) (right parenthesis) and the { (left curly brace) that begins the statement body. The body itself is indented four spaces. The } (right curly brace) is aligned with the line containing the beginning of the declaration of the function.

.

Ejemplo para una función :

function outer(c, d) { 
    var e = c * d; 

    function inner(a, b) { 
     return (e * a) + b; 
    } 

    return inner(0, 1); 
} 

Ejemplo para función anónima:

div.onclick = function (e) { 
    return false; 
}; 
+0

un ejemplo para su explicación sería bueno :) – yashhy

+0

@yashhy muy bien mate :) –

2

Técnicamente hablando, su código es perfectamente válido, aunque algunos estándares de estilo de código dictan que no debe haber dicho espacio (por ejemplo, el que @Bodgan citó).

De hecho, cuando comprime su código (usando una de muchas herramientas como YUI Compressor o Google Closure Compiler), estos espacios se eliminan por completo, incluidos los antes/después de las llaves como se cita en @Bodgan. Y es válido JS por supuesto.

42

According to Crockford,

Para llamado funciones, no inserte espacio entre nombre de la función y los paréntesis:

function doStuff() { 
    //stuff here 
} 

Para funciones anónimas, DO espacio de inserción entre function palabra clave y los paréntesis:

function() { 
    //stuff here 
} 
+20

En mi humilde opinión (y en Crockford's) esto hace que los dos tipos de funciones sean más fáciles de distinguir.Creo que seguir las reglas de Crockford, incluso donde no es lógico, es una buena idea porque son consistentes y validables con JSLint. Son la regla de estilo de código de facto para Javascript. A menos que tengas una buena razón para usar algo diferente, no lo haría. (Y no estar de acuerdo con Crockford porque siempre has codificado de otra manera no es una buena razón) – rjmunro

+3

@rjmunro +1 - para el comentario. Actualmente, es el único lugar en la página que "explica POR QUÉ es malo" (sin simplemente repetir dogmáticamente las reglas de la convención). –

+1

Puedo distinguirlos. ¿Vale la pena agregar una regla de estilo de caso especial? No lo creo, FWIW, la biblioteca de d3.js rompe la sugerencia de Crockford, lo cual está bien para mí. –

Cuestiones relacionadas