Entendendo o uso do 'use strict' em JavaScript

'use strict' é uma maneira de impor regras mais rigorosas para seu código JavaScript. Aprenda como utilizá-lo para evitar erros comuns e melhorar a segurança do seu código.

O que é 'use strict' e quando usá-lo?

O 'use strict' é uma diretiva no JavaScript que foi introduzida no ECMAScript 5 (ES5) com o objetivo de impor uma versão mais restritiva da linguagem. Quando você usa 'use strict' em seu código, o JavaScript aplica uma série de regras que ajudam a evitar erros comuns, melhorar a segurança e até mesmo melhorar a performance do seu código. Esta diretiva é uma prática recomendada para a maioria dos projetos JavaScript.

O que acontece quando usamos 'use strict'?

Ao declarar 'use strict' no início de um arquivo ou dentro de uma função, você ativa o modo estrito. Nesse modo, o JavaScript verifica a conformidade de algumas regras adicionais, o que pode impedir que você use práticas de codificação arriscadas ou potenciais fontes de erro.

Exemplo de como ativar o 'use strict':

'use strict';

let nome = 'João';  // Em 'strict mode', você não pode criar variáveis sem 'let', 'const' ou 'var'

Neste exemplo, o modo estrito foi ativado logo no início do código, o que implica que qualquer erro causado por práticas incorretas será capturado, como a criação de variáveis sem o uso de let, const ou var.

Principais características do 'use strict'

  1. Proíbe a declaração de variáveis sem let, const ou var: No modo estrito, tentar declarar uma variável sem usar uma das palavras-chave de declaração de variável (let, const, var) resultará em um erro.

Exemplo:

'use strict';

nome = 'João';  // Erro: "nome" não foi declarado.

Neste exemplo, o código geraria um erro porque tentamos criar a variável nome sem declarar ela primeiro.

  1. Elimina this global: Quando você usa 'use strict' dentro de uma função, a palavra-chave this deixa de se referir ao objeto global (como window no navegador). Isso impede comportamentos inesperados quando você tenta acessar this dentro de funções.

Exemplo:

'use strict';

function exemplo() {
  console.log(this);  // No strict mode, 'this' é undefined em funções simples
}

exemplo();

Neste caso, this dentro da função não se refere ao objeto global (como window), mas sim será undefined.

  1. Proíbe a duplicação de parâmetros: No modo estrito, não é permitido ter parâmetros com nomes duplicados em uma função. Isso ajuda a evitar confusão e comportamentos inesperados em funções com múltiplos parâmetros.

Exemplo:

'use strict';

function soma(a, a) {  // Erro: Parâmetros duplicados não são permitidos
  return a + a;
}

O JavaScript irá lançar um erro, pois a função soma tem parâmetros duplicados.

  1. Desabilita o uso do with: O with é uma estrutura de controle em JavaScript que pode causar confusão e erros, pois altera o escopo de variáveis de maneira imprevisível. O modo estrito desabilita o uso de with, forçando uma maneira mais clara e previsível de escrever o código.

  2. Evita a criação de propriedades no objeto global: Sem o use strict, você poderia acidentalmente criar propriedades no objeto global. Com o use strict, isso não é permitido.

Exemplo:

'use strict';

function exemplo() {
  x = 10;  // Erro: 'x' não foi declarado antes de ser usado.
}

exemplo();

Aqui, a variável x não pode ser criada sem ser explicitamente declarada dentro de uma função, o que evita a poluição do escopo global.

Quando usar 'use strict'?

Você deve usar 'use strict' sempre que possível, já que ele ajuda a detectar erros que poderiam ser difíceis de encontrar em JavaScript tradicional. No entanto, como o modo estrito pode quebrar comportamentos antigos em alguns casos, você deve estar ciente de que pode haver problemas de compatibilidade se você estiver trabalhando com código legado ou bibliotecas que não foram escritas com o 'use strict' em mente.

O melhor é sempre começar a usar 'use strict' desde o início de um novo projeto, ou adicionar ao código existente gradualmente, testando seu impacto.

Exemplo de uso de 'use strict' em uma função:

function minhaFuncao() {
  'use strict';
  let nome = 'Maria';
  console.log(nome);  // Funciona normalmente
}

minhaFuncao();

Conclusão

Usar o modo estrito do JavaScript com a diretiva 'use strict' é uma boa prática de segurança e qualidade de código. Ele ajuda a evitar erros comuns, melhora a legibilidade do código e oferece maior controle sobre o comportamento do código. Ao adotar essa prática em seu desenvolvimento JavaScript, você estará criando aplicações mais seguras e fáceis de depurar.

'use strict' é uma prática simples que melhora a qualidade e a segurança do código JavaScript. Ao usá-lo, você pode evitar problemas como declarações de variáveis globais acidentais e facilitar a depuração de seu código. Começar a usar 'use strict' em novos projetos pode ajudar a evitar erros e promover boas práticas de programação.

Algumas aplicações:

  • Impor boas práticas de codificação, como a declaração de variáveis.
  • Melhorar a segurança de aplicações, evitando que erros de escopo afetem o código.
  • Facilitar a depuração de código, garantindo que funções não usem valores globais inesperados.
  • Obter mais controle sobre o comportamento do JavaScript, tornando o código mais previsível e estável.

Dicas para quem está começando

  • Comece a usar 'use strict' em todos os novos arquivos de código JavaScript para evitar erros ocultos.
  • Teste seu código com e sem 'use strict' para ver como o modo estrito ajuda a capturar erros.
  • Se estiver trabalhando com código legado, ative 'use strict' gradualmente e observe se surgem problemas de compatibilidade.
  • Fique atento aos erros que podem surgir ao usar 'use strict', como a tentativa de modificar o objeto window ou declarar variáveis sem o uso de let, const ou var.

Contribuições de Fernando Antunes

Compartilhe este tutorial: O que é use strict e quando usá-lo?

Compartilhe este tutorial

Continue aprendendo:

Como evitar variáveis globais em JavaScript?

Descubra as melhores práticas para evitar variáveis globais em JavaScript e como isso pode ajudar a manter seu código mais organizado e livre de erros.

Tutorial anterior

Como evitar vazamento de memória em JavaScript?

Descubra como prevenir vazamentos de memória em JavaScript, identificando e corrigindo práticas que podem prejudicar a performance de sua aplicação.

Próximo tutorial