Usando `var` ou não
Você deve introduzir qualquer variável com a var
instrução, caso contrário ela chega ao escopo global.
Vale ressaltar que, no modo estrito ( "use strict";
) , atribuições de variáveis não declaradas são lançadasReferenceError
.
No momento, o JavaScript não tem um escopo de bloco. A escola de Crockford ensina você a colocar instruções var no início do corpo da função , enquanto o Guia de Estilo do Dojo lê que todas as variáveis devem ser declaradas no menor escopo possível . (A let
declaração e a definição introduzidas no JavaScript 1.7 não fazem parte do padrão ECMAScript.)
É uma boa prática vincular propriedades de objetos usados regularmente a variáveis locais, pois é mais rápido do que pesquisar toda a cadeia de escopo. (Consulte Otimizando o JavaScript para obter desempenho extremo e baixo consumo de memória .)
Definindo coisas no arquivo ou em um `(function () {...}) ()`
Se você não precisar alcançar seus objetos fora do código, poderá agrupar todo o código em uma expressão de função - chamada de padrão do módulo. Possui vantagens de desempenho e também permite que seu código seja reduzido e oculto em alto nível. Você também pode garantir que ele não polua o espaço para nome global. As funções de agrupamento em JavaScript também permitem adicionar comportamento orientado a aspectos. Ben Cherry tem um artigo detalhado sobre o padrão do módulo .
Usando `this` ou não
Se você usa herança pseudo-clássica em JavaScript, dificilmente poderá evitar o uso this
. É uma questão de gosto que padrão de herança você usa. Para outros casos, consulte o artigo de Peter Michaux sobre JavaScript Widgets Sem "this" .
Usando `function myname ()` ou `myname = function ();`
function myname()
é uma declaração de função e myname = function();
é uma expressão de função atribuído à variável myname
. A última forma indica que as funções são objetos de primeira classe e você pode fazer qualquer coisa com elas, como com uma variável. A única diferença entre eles é que todas as declarações de função são transferidas para o topo do escopo, o que pode ser importante em certos casos. Caso contrário, eles são iguais. function foo()
é uma forma abreviada. Mais detalhes sobre a elevação podem ser encontrados no artigo JavaScript Scoping and Hoisting .
Definindo métodos no corpo do objeto ou usando "prototype"
Você decide. O JavaScript possui quatro padrões de criação de objetos: pseudo-clássico, prototípico, funcional e partes ( Crockford, 2008 ). Cada um tem seus prós e contras, veja Crockford em suas palestras em vídeo ou obtenha seu livro The Good Parts, como Anon já sugeriu .
Frameworks
Sugiro que você escolha algumas estruturas de JavaScript, estude suas convenções e estilo e encontre as práticas e padrões que melhor se adequam a você. Por exemplo, o Dojo Toolkit fornece uma estrutura robusta para escrever código JavaScript orientado a objetos que suporta até várias heranças.
Padrões
Por fim, existe um blog dedicado a explorar padrões e antipadrões comuns de JavaScript . Verifique também a pergunta Existem padrões de codificação para JavaScript? no estouro de pilha.