Usando `var` o no
Debe introducir cualquier variable con la var
declaración, de lo contrario, llega al ámbito global.
Vale la pena mencionar que en modo estricto ( "use strict";
) arroja asignaciones de variables no declaradasReferenceError
.
En la actualidad, JavaScript no tiene un alcance de bloque. La escuela Crockford le enseña a poner declaraciones var al comienzo del cuerpo de la función , mientras que la Guía de estilo de Dojo dice que todas las variables deben declararse en el menor alcance posible . (La let
declaración y la definición introducidas en JavaScript 1.7 no forman parte del estándar ECMAScript).
Es una buena práctica vincular las propiedades de los objetos utilizados regularmente a las variables locales, ya que es más rápido que buscar en toda la cadena de alcance. (Ver Optimización de JavaScript para obtener un rendimiento extremo y un bajo consumo de memoria ).
Definir cosas en el archivo, o en un `(function () {...}) ()`
Si no necesita alcanzar sus objetos fuera de su código, puede envolver todo el código en una expresión de función, se llama patrón de módulo. Tiene ventajas de rendimiento y también permite que su código se minimice y se oscurezca a un alto nivel. También puede asegurarse de que no contaminará el espacio de nombres global. Funciones de envoltura en JavaScript también le permiten agregar un comportamiento orientado a aspectos. Ben Cherry tiene un artículo en profundidad sobre el patrón de módulo .
Usando `this` o no
Si usa la herencia pseudo-clásica en JavaScript, difícilmente puede evitar usarla this
. Es cuestión de gustos qué patrón de herencia utilizas. Para otros casos, consulte el artículo de Peter Michaux sobre widgets de JavaScript sin "esto" .
Usando `function myname ()` o `myname = function ();`
function myname()
es una declaración de función y myname = function();
es una expresión de función asignada a variable myname
. La última forma indica que las funciones son objetos de primera clase, y puede hacer cualquier cosa con ellas, como con una variable. La única diferencia entre ellos es que todas las declaraciones de funciones se elevan a la parte superior del alcance, lo que puede ser importante en ciertos casos. De lo contrario son iguales. function foo()
es una forma abreviada Se pueden encontrar más detalles sobre el izado en el artículo de alcance y elevación de JavaScript .
Definir métodos en el cuerpo del objeto o usar "prototipo"
Tu decides. JavaScript tiene cuatro patrones de creación de objetos: pseudoclásicos, prototípicos, funcionales y partes ( Crockford, 2008 ). Cada uno tiene sus pros y sus contras, vea Crockford en sus videoconferencias u obtenga su libro The Good Parts como Anon ya lo sugirió .
Marcos
Le sugiero que elija algunos marcos de JavaScript, estudie sus convenciones y estilo, y encuentre las prácticas y patrones que mejor se adapten a usted. Por ejemplo, el Dojo Toolkit proporciona un marco robusto para escribir código JavaScript orientado a objetos que incluso admite herencia múltiple.
Patrones
Por último, hay un blog dedicado a explorar patrones y antipatrones comunes de JavaScript . Consulte también la pregunta ¿Existen estándares de codificación para JavaScript? en desbordamiento de pila.