2010-11-10 26 views
20

¿Cuál es el estándar de nomenclatura y formato para las variables globales en JavaScript?Norma de nomenclatura/formato para las variables globales

Por ejemplo:

var global_var // ? 
var _global_var // ? 
var GLOBAL_VAR // ? 
var _GLOBAL_VAR // ? 
... 

Nota: No estoy hablando acerca de constantes, simplemente variables que tienen alcance mundial.

+8

Advertencia: obtendrá un montón de comentarios sarcásticos sobre cómo nunca, nunca, nunca, nunca, nunca, nunca utilice variables globales. Solo ignóralos, ya que eso no tiene nada que ver con tu pregunta. –

+0

Gracias. (Veo poca diferencia entre una variable de clase privada y una variable javascript global.) – StaceyI

+0

BTW, (por el momento) no existe una constante en JavaScript (aunque 'constant' es una palabra clave reservada por especificación). –

Respuesta

15

No hay estándares como tal. La práctica más común es utilizar una caja de camello inferior (por ejemplo, var fooBarBaz;) para todas las variables y nombres de propiedad, independientemente del alcance, pero esto de ninguna manera es universal. La única excepción es para capitalizar el nombre de una función que está destinado a ser utilizado como un constructor:

function SomeClass() {} 

var someClassObj = new SomeClass(); 

También he visto mayúsculas y guiones para las variables que el autor considera constantes, o alternativamente para todos variables globales:

var EARTH_RADIUS = 6378100; 

Otra convención bastante común (aunque no es que yo mismo uso) es a las propiedades de los objetos de prefijo que el autor desea ser considerada privada con un guión:

this._leaveThisAlone = "Magical property"; 

Douglas Crockford publicó his own take on JavaScript code standards hace varios años que cubre la mayor parte de esto, pero como siempre esta es sólo la opinión de un hombre, así que tómalo con un poco de sal.

+1

Según el artículo al que se ha vinculado, indica ** "Las variables globales deben estar en mayúsculas" **. Esto es contrario a lo que declaraste arriba. – StaceyI

+5

Bueno, ahí tienes. Como digo, no hay un estándar oficial, y Crockford tiene sus propios puntos de vista que no todos comparten. –

+0

Todas las mayúsculas son las mismas que var EARTH_RADIUS en mi opinión. ¿De qué otra manera puede mostrar que son palabras separadas si no es a través de mayúsculas? – hyprsleepy

3

El requisito comentario sobre replantear el diseño si usted está necesitando utilizar variables globales, bla, bla ...

Las variables globales que he visto normalmente llevan el prefijo g o gbl. Algunas veces esto se modifica con un guión bajo: _g, _gbl. IIRC, los guiones bajos se usaron cuando 'global' se limitó a algún ámbito y no 'verdaderamente' global.

Si vas a utilizar una variable global de un modo donde TODO no debería poder usar la variable, utilizaría el guión bajo. En javascript (IIRC) la convención de usar un guión bajo como prefijo implica que la variable es 'privada' o no debe usarse externamente. Si, alternativamente, lo declaras de una manera que todo el mundo debería poder acceder y modificar, me limitaría a usar el prefijo y el guión bajo.

-2

Si desea que employeeID sea una variable global, entonces el método correcto es declarar como window.employeeID = 5; y luego use window.employeeID en todos los lugares a los que accedería más tarde.

+2

Usted implica que este es el único método correcto, que es falso. Declarar una variable fuera de un alcance de función también asocia la variable al objeto de ventana, por lo que es una especie de taquigrafía. Ambos son correctos. 'var GLOBAL_VAR =" foo ";' '// igual que' ' window.GLOBAL_VAR = "foo"; ' –

0

Una razón importante por la que las personas le dirían que no use variables globales es para evitar interferir con otras secuencias de comandos y/o bibliotecas.

Una convención que comencé a usar cuando necesito usar una variable global es agregar mi apellido, de esta forma sé que no interferiré con las variables globales de ninguna biblioteca o scripts externos. (Aunque tengo un apellido bastante único, esto podría no funcionar si eres un Smith).

Así que mis variables globales serían nombrados:

var foo_lastnameGlobal; 
var bar_lastnameGlobal; 

Debo señalar (en caso de que no está claro) esto es sólo una convención personal, no una común o ampliamente usado.También me ayuda a recordar cuáles son mis variables globales cuando las uso. Supongo que podría no ser tan bueno para el código público o en un entorno profesional de trabajo en grupo.