JavaScript é uma linguagem que perdoa. Algumas de suas sintaxes são opcionais e a linguagem se recupera de erros com mais facilidade do que muitas outras. Mas essa pegada vem com uma penalidade: pode ser mais fácil introduzir bugs e o código inconsistente é mais difícil de ler.
Felizmente, se você quiser exercer mais disciplina, há uma maneira fácil de fazer isso: modo estrito. O modo estrito é uma forma de solicitar que o JavaScript reaja de forma mais decisiva ao encontrar problemas em seu código.
O que é um modo estrito?
Diversas linguagens usam o conceito de modo estrito: um modo que avalia e executa o código com mais rigor. Você pode estar familiarizado com o doctype estrito de HTML, que reprova certos elementos e atributos.
Perl, outra linguagem de script interpretada, há muito tem seu próprio modo estrito. Este modo proíbe certos tipos de expressão insegura.
Como faço para usar o modo estrito em JavaScript?
Dentro de um script, coloque uma instrução "use strict" logo no início, antes de qualquer outra instrução:
// todo o script estará em modo estrito
'use estrito';
Observe que você pode incluir um comentário antes dele, mas nenhuma declaração. Você pode habilitar o modo estrito em um arquivo JavaScript ou no início de um bloco de script em um arquivo HTML. Você também pode ativar o modo estrito em uma base função por função:
function strict () {
// Sintaxe de modo estrito de nível de função
'use estrito';
return "Esta função é estrita";
}
function loose () {
return "Esta função NÃO é estrita";
}
Depois de ativar o modo estrito, certifique-se de testar seu código. Se você estiver trabalhando com a web, abra um Console JavaScript, para que você possa identificar novos erros.
O que o modo estrito do JavaScript faz?
Em suma, o modo estrito será menos tolerante com certos tipos de código problemático. Em vez de ignorar problemas e continuar a execução, certos erros irão interromper o script. Isso geralmente é mais seguro do que continuar em circunstâncias indesejáveis.
Previne Globals Acidentais
O melhor exemplo contra o qual o modo estrito protege é a criação de variáveis globais acidentais. Em execução normal, este código:
myVar = 17;
Ele criará uma propriedade chamada myVar no objeto global, supondo que você não tenha declarado myVar anteriormente. Em um navegador da web, o objeto global geralmente é a janela:
console.log (window.myVar);
>> 17
Se você incluir uma instrução “use estrito”, no entanto, verá um erro no console, algo como:
ReferenceError não capturado: myVar não está definido
A razão pela qual isso é tão útil é que ele detecta um caso comum de erro de digitação. É fácil digitar incorretamente um nome de variável, e muitos idiomas nos pegariam nesse tipo de erro.
Mas JavaScript, por padrão, simplesmente assume o escopo do objeto global e continua como se nada estivesse errado. Alguns códigos podem depender intencionalmente desse comportamento, que é algo que você deve estar ciente ao decidir usar o modo estrito.
Veja também: Como manter seu código limpo com encapsulamento de objetos
Torna a falha explícita
Algum comportamento em JavaScript falha, mas o faz silenciosamente. Você pode não saber sobre esses erros, a menos que os esteja verificando especificamente. Por exemplo, NaN é uma propriedade especial do objeto global que representa um número inválido. Esta propriedade é somente leitura, mas você ainda pode tentar gravá-la:
NaN = 2;
>> 2
Mas mesmo que pareça que a atribuição foi bem-sucedida, ela não:
NaN
>> NaN
No modo estrito, você obterá um erro real informando que você não pode atribuir a NaN. Este código usa uma função para que você possa demonstrar o modo estrito no console:
javascript
function badNaN () {"usar estrito"; janela. NaN = 2; }
>> indefinido
badNan ()
>> TypeError não capturado: Não é possível atribuir a propriedade somente leitura 'NaN' do objeto '#'
em badNaN (: 1: 46)
em: 1: 1
Este é um exemplo clássico que mostra, embora a ignorância possa ser uma bênção, às vezes é melhor saber se algo dá errado.
Avisa sobre parâmetros duplicados
O exemplo final trata de um recurso pouco conhecido do JavaScript. Você pode ficar surpreso ao saber que os nomes dos parâmetros não precisam ser exclusivos:
função dupeParam (a, a, c) {console.log (a); }
>> indefinido
dupeParam (2, 4, 8)
>> 4
Observe que o JavaScript atribui o valor mais recente a um parâmetro duplicado. Agora, esse comportamento não é particularmente útil. Na verdade, seria mais útil para o JavaScript nos dizer que é um erro, e é exatamente isso que o modo estrito faz:
function dupeParam (a, a, c) {"usar estrito"; }
<< SyntaxError não capturado: Nome do parâmetro duplicado não permitido neste contexto
Use o modo estrito para obter confiança extra de código
Boas práticas e meios de aplicá-las andam de mãos dadas. Em alguns contextos, como uma função de programação profissional, você desejará exercer o máximo de disciplina possível. Mesmo se você estiver apenas trabalhando em um projeto de código aberto de hobby, o mantenedor pode preferir usar o modo estrito como padrão.
Em última análise, depende de você, mas é útil saber que uma mão amiga está disponível. Como programador, você deve sempre estar atento às melhores práticas e ao que pode fazer para aplicá-las.
Seu código deve ser claro e fácil de manter. Aqui estão vários outros princípios de programação para ajudá-lo a limpar seu ato.
Leia a seguir
- Programação
- JavaScript
- Desenvolvimento web
- Linguagens de programação
Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor-chefe na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.
Assine a nossa newsletter
Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!
Clique aqui para se inscrever