tutoriais mais recente desenvolvimento web
 

JavaScript Melhores práticas


Evitar variáveis globais, evite new , evite == , evite eval()


Evitar variáveis ​​globais

Minimizar o uso de variáveis ​​globais.

Isso inclui tipos todos os dados, objetos e funções.

Variáveis ​​globais e funções podem ser substituídos por outros scripts.

Use variáveis locais em vez disso, e aprender como usar encerramentos .


Sempre declarar variáveis ​​locais

Todas as variáveis usadas em uma função devem ser declarados como variáveis locais.

As variáveis locais devem ser declarados com o var palavra-chave, caso contrário, eles vão se tornar variáveis globais.

modo estrito não permite variáveis ​​não declaradas.


Declarações sobre Top

É uma boa prática de codificação para colocar todas as declarações na parte superior de cada script ou função.

Isso vai:

  • Dê um código mais limpo
  • Fornecer um único lugar para olhar para as variáveis ​​locais
  • Torná-lo mais fácil evitar (implícita) variáveis ​​globais indesejados
  • Reduzir a possibilidade de re-declarações indesejados
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;

// Use later
firstName = "John";
lastName = "Doe";

price = 19.90;
discount = 0.10;

fullPrice = price * 100 / discount;

Isto também vale para variáveis ​​de loop:

// Declare at the beginning
var i;

// Use later
for (i = 0; i < 5; i++) {

Por padrão, o JavaScript move todas as declarações até o topo (içar JavaScript).


inicializar variáveis

É uma boa prática de codificação para inicializar variáveis ​​quando você declará-los.

Isso vai:

  • Dê um código mais limpo
  • Fornecer um único local para inicializar variáveis
  • Evite valores indefinidos
// Declare and initiate at the beginning
var firstName = "",
    lastName = "",
    price = 0,
    discount = 0,
    fullPrice = 0,
    myArray = [],
    myObject = {};

Inicialização de variáveis ​​fornece uma ideia da utilização pretendida (e destinados tipo de dados).


Nunca Declare Number, String, ou objetos booleanos

Sempre trate números, strings, ou booleans como valores primitivos. Não como objetos.

Declarar esses tipos como objetos, retarda a velocidade de execução, e produz efeitos colaterais desagradáveis:

Exemplo

var x = "John";             
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Tente você mesmo "

Ou ainda pior:

Exemplo

var x = new String("John");             
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Tente você mesmo "

Não use new Object()

  • Use {} em vez de new Object()
  • Use "" em vez de new String()
  • Use 0 em vez de new Number()
  • Use false em vez de new Boolean()
  • Use [] em vez de new Array()
  • Use /()/ , em vez de new RegExp()
  • Use function (){} em vez de new Function()

Exemplo

var x1 = {};           // new object
var x2 = "";           // new primitive string
var x3 = 0;            // new primitive number
var x4 = false;        // new primitive boolean
var x5 = [];           // new array object
var x6 = /()/;         // new regexp object
var x7 = function(){}; // new function object
Tente você mesmo "

Cuidado com tipo automático Conversões

Tenha em atenção que os números podem acidentalmente ser convertido em cordas ou NaN (não um número).

JavaScript é vagamente digitado. Uma variável pode conter diferentes tipos de dados, e uma variável pode mudar seu tipo de dados:

Exemplo

var x = "Hello";     // typeof x is a string
x = 5;               // changes typeof x to a number
Tente você mesmo "

Ao fazer operações matemáticas, JavaScript pode converter números para strings:

Exemplo

var x = 5 + 7;       // x.valueOf() is 12,  typeof x is a number
var x = 5 + "7";     // x.valueOf() is 57,  typeof x is a string
var x = "5" + 7;     // x.valueOf() is 57,  typeof x is a string
var x = 5 - 7;       // x.valueOf() is -2,  typeof x is a number
var x = 5 - "7";     // x.valueOf() is -2,  typeof x is a number
var x = "5" - 7;     // x.valueOf() is -2,  typeof x is a number
var x = 5 - "x";     // x.valueOf() is NaN, typeof x is a number
Tente você mesmo "

Subtraindo uma corda de uma cadeia, não gera um erro, mas retorna NaN (não um número):

Exemplo

"Hello" - "Dolly"    // returns NaN
Tente você mesmo "

Use === Comparação

O == operador de comparação sempre converte (a tipos correspondentes) antes de comparação.

O === comparação forças operador de valores e digite:

Exemplo

0 == "";        // true
1 == "1";       // true
1 == true;      // true

0 === "";       // false
1 === "1";      // false
1 === true;     // false
Tente você mesmo "

Usar padrões de parâmetro

Se uma função é chamada com um argumento ausente, o valor do argumento em falta é definido como undefined .

valores indefinidos pode quebrar seu código. É um bom hábito de atribuir valores padrão para argumentos.

Exemplo

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}
Tente você mesmo "

Leia mais sobre os parâmetros de função e argumentos em Parâmetros de Função


Termine o seu Switches com Padrões

Sempre terminar suas declarações switch com um padrão. Mesmo se você acha que não há necessidade para isso.

Exemplo

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    case 3:
        day = "Wednesday";
        break;
    case 4:
        day = "Thursday";
        break;
    case 5:
        day = "Friday";
        break;
    case 6:
        day = "Saturday";
        break;
    default:
        day = "Unknown";
}
Tente você mesmo "

Evite usar eval()

O eval() função é usada para executar o texto como código. Em quase todos os casos, não deve ser necessário utilizá-lo.

Porque permite que código arbitrário seja executado, também representa um problema de segurança.