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:

instagram viewer
// 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.

10 princípios básicos de programação que todo programador deve conhecer

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

CompartilhadoTweetO email
Tópicos relacionados
  • Programação
  • JavaScript
  • Desenvolvimento web
  • Linguagens de programação
Sobre o autor
Bobby Jack (62 artigos publicados)

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.

Mais de Bobby Jack

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