Práticas Recomendadas JavaScript
- Página Anterior Guia de Estilo JS
- Próxima Página Erros JS
Evite variáveis globais,new
,===
,eval()
Evitar variáveis globais
Tente usar o mínimo possível de variáveis globais.
Inclui todos os tipos de dados, objetos e funções.
Variáveis globais e funções podem ser substituídas por outros scripts.
Use variáveis locais em substituição e aprenda a usá-lasEncerramento。
Sempre declarar variáveis locais
Todas as variáveis usadas dentro da função devem ser declaradas comoLocaisVariáveis
Variáveis locaisÉ necessárioPelo var Palavras-chave para declarar, senão elas se tornarão variáveis globais.
O modo estrito não permite variáveis não declaradas.
Declarar no topo
Um bom hábito de codificação é colocar todas as declarações no topo de cada trecho de código ou função.
Os benefícios disso são:
- Obter um código mais limpo
- Oferece um bom local para encontrar variáveis locais
- Mais fácil evitar variáveis globais desnecessárias
- Reduzir a possibilidade de declarações desnecessárias
// Declarar no topo var firstName, lastName, price, discount, fullPrice; // Usar mais tarde firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
Também pode ser usado para variáveis de loop:
// Declarar no topo var i; // Usar mais tarde for (i = 0; i < 5; i++) {
Por padrão, o JavaScript move todas as declarações para o topo (hoisting do JavaScript).
Inicializar variáveis
O hábito de inicializar variáveis ao declará-las é uma boa prática.
Os benefícios disso são:
- Código mais limpo
- Inicialize variáveis em locais separados
- Evite valores não definidos
// Declare e inicialize no início var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
A inicialização de variáveis nos permite entender o uso esperado e o tipo de dados esperado.
Não declare objetos de números, strings ou booleanos
Sempre veja os números, strings ou booleanos como valores primitivos, não como objetos.
Se você declarar esses tipos como objetos, isso pode atrasar a execução e causar efeitos colaterais desagradáveis:
Exemplo
var x = "Bill"; var y = new String("Bill"); (x === y) // O resultado é false, porque x é uma string e y é um objeto.
ou até pior:
Exemplo
var x = new String("Bill"); var y = new String("Bill"); (x == y) // O resultado é false, porque você não pode comparar objetos.
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 = {}; // Novo objeto var x2 = ""; // Novo valor de string primitivo var x3 = 0; // Novo valor numérico primitivo var x4 = false; // Novo valor booleano primitivo var x5 = []; // Novo objeto de array var x6 = /()/; // Nova expressão regular var x7 = function(){}; // Novo objeto de função
tenha em mente a conversão automática de tipos
Tenha em mente que os números podem ser convertidos acidentalmente em strings ou NaN
(Não é um número).
JavaScript é um tipo de dados flexível. As variáveis podem conter diferentes tipos de dados e podem mudar seu tipo de dados:
Exemplo
var x = "Hello"; // typeof x é string x = 5; // Altere typeof x para number
Se realizar operações matemáticas, o JavaScript pode converter números para strings:
Exemplo
var x = 5 + 7; // x.valueOf() é 12, typeof x é number var x = 5 + "7"; // x.valueOf() é 57, typeof x é string var x = "5" + 7; // x.valueOf() é 57, typeof x é string var x = 5 - 7; // x.valueOf() é -2, typeof x é number var x = 5 - "7"; // x.valueOf() é -2, typeof x é number var x = "5" - 7; // x.valueOf() é -2, typeof x é number var x = 5 - "x"; // x.valueOf() é NaN, typeof x é number
Subtrair strings não gera erro, mas retorna NaN
(Not a Number):
Exemplo
"Hello" - "Dolly" // retorna NaN
Use === para comparar
==
Os operadores de comparação sempre realizam conversões de tipo antes da comparação (para combinar tipos).
===
Os operadores forçam a comparação entre valores e tipos:
Exemplo
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Using Parameter Defaults
Se falta um parâmetro ao chamar a função, o valor desse parâmetro ausente será configurado como undefined
。
undefined
O valor padrão pode danificar seu código. Estabelecer valores padrão para parâmetros é um hábito bom.
Exemplo
function myFunction(x, y) { if (y === undefined) { y = 0; } }
Por favor, consulteParâmetros de FunçãoNesta seção, leia mais sobre parâmetros de função.
use default para encerrar switch
Use padrão
para encerrar seu switch
instrução. Mesmo que você ache que não há necessidade disso.
Exemplo
switch (new Date().getDay()) { caso 0: day = "Sábado"; quebrar; caso 1: day = "Domingo"; quebrar; caso 2: day = "Segunda-feira"; quebrar; caso 3: day = "Terça-feira"; quebrar; caso 4: day = "Quarta-feira"; quebrar; caso 5: day = "Quinta-feira"; quebrar; caso 6: day = "Sábado"; quebrar; padrão: day = "Desconhecido"; }
Evite usar eval()
eval()
A função é usada para permitir texto como código. Em quase todos os casos, não há necessidade de usá-la.
Devido ao permitimento da execução de código arbitrário, também significa problemas de segurança.
- Página Anterior Guia de Estilo JS
- Próxima Página Erros JS