O que é "use strict"; a variante independente do JavaScript
Tags: javascript, beginners
Published: 2023-01-26 14:44:02

Como programadores, conseguimos utilizar e modificar os códigos de um aplicativo, sistema ou site, com maior liberdade. Mas já aconteceu a situação de terminar um expediente de trabalho,fazer alguma alteração ficando preso por dias sem encontrar a solução, mesmo que seu código a princípio pareça perfeito? Existe uma ferramenta que pode ser ativada que pode lhe ajudar. O que é, e como acessar esse recurso?Funcionamento prático e diferenças para a estrutura padrão?



**"use strict";**

Ao longo dos anos, o JavaScript evolui bastante e se manteve estável para uso. No ano de 2009, quando o ECMAScript 5 (ES5) apareceu, acrescentou novas funcionalidades à linguagem e modificou algumas das existentes. Para manter o código antigo funcionando, a maioria dessas modificações estava desativada por padrão. Você precisaria ativá-los explicitamente com uma diretiva especial: `"use strict"`.

O strict mode, não é apenas um nome diferente, ele intencionalmente tem semânticas diferentes do código normal. E embora eles possa coexistir, o strict mode tem suas diferenças.

Sendo simples e direto, o "use strict"; causa + erros no seu código. Pode se perguntar: "Mas no ínicio do artigo, você diz que essa ferramenta iria ajudar no erro, e não causa mais!" Exatamente. Utilizando o Strict mode, o sistema fica sensível a erros que no modo normal do JavaScript, não se encararia como problema. Vamos entender na prática o que quero dizer?

Vejamos a seguir um exemplo de funcionamento do "use strict";


```
const hello = () => {
let x = "Olá mundo";
console.log(x + "para todos");
}

hello();
```

O código a princípio correto. Nós fizemos uma função const que tem o nome `hello`, ela carrega modelo arrow (aliás, existe um artigo falando sobre esse tipo de modelo: https://dev.to/altencirsilvajr/como-criar-e-utilizar-funcoes-em-javascript-2bpe), logo após declara uma variável x, com uma string dentro dela. Após isso puxa o console e mais abaixo chama a função.

Mas o que aconteceria se eu esquecesse de declarar aquele `let `?



```
const hello = () => {
 x = "Olá mundo";
console.log(x + "para todos");
}

hello();
```

Caso execute esse código, ele ainda vai funcionar, mas ele acaba criando uma propriedade no projeto global( isso pode ser facilmente visto utilizando num terminal: window.x), o que não era o nosso desejo. Embora o JavaScript comum fosse deixar passar esse erro, mais a frente, poderia causar algum problema que só seria reslvido com uma forte análise.


_O que acontecce quando usa o "use strict";? _

```
"use strict"

const hello = () => {
 x = "Olá mundo";
console.log(x + "para todos");
}

hello();
```


Nesse caso, ainda continuamos sem declarar o x. Com o uso do "use strict" veremos o que acontece ->


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cywgmoijzuohyevp172w.png)

Usando o strict mode, o código reconhece aquele erro de sintaxe como importante e o coloca como erro grave, chamando o problema pra ser corrigido.



**Por que usar o "use strict";**

A pergunta pode parecer óbvia, mas não é.

Alguém poderia recomendar começar os scripts com "use strict"… Mas você sabe o que é legal? O JavaScript moderno, não é mais o de 2008 e oferece suporte a “classes” e “módulos” – estruturas de linguagem avançadas, que habilitam `use strict` automaticamente. Portanto, não precisamos adicionar a "use strict".

Então, por enquanto "use strict"; é uma simples regalia ou escolha pessoal. Mais tarde, quando seu código estiver todo em classes e módulos, você pode omiti-lo, pois terá um código   provavelmente "sem erros".

Seja iniciante ou um programador com mais experiência, concordamos em algo importante: é muito melhor um erro, do que um código com execução inconsistente,saber ao final de um código que errou em esquecer uma simples vírgula, pode ser problemático, ainda mais quando falamos de milhares ou talves milhões de linhas de código. Modo Restrito acaba servindo como amigo, que indica  todos os seus erros, para que você corrija e tenha sucesso final.





Obrigado por ler até aqui!