Vamos ver os diferentes cenários, onde esta simples alteração pode ajudá-lo.
p>Uma variável não será adicionada ao objecto global/janela se não for declarada.
Por defeito, se uma variável não declarada for definida, será adicionada ao objecto global/janela. Isto pode criar um erro e pode até ser difícil de encontrar.
Variável não declarada é adicionada ao objecto global Para evitar tais cenários, podemos declarar o uso rigoroso. O modo estrito não permite a utilização de variáveis que não tenham sido declaradas.
Variáveis não declaradas não ser adicionado ao objecto global
Não se pode declarar variáveis que possam ser usadas como futuras palavras de reserva.
div>
div>
Reserve Word Exception
p>Como podemos ver no exemplo acima, do lado esquerdo pudemos declarar uma variável e nomeá-la que é uma palavra-chave reservada ES6. Tecnicamente, isto deve lançar uma excepção, mas é ignorado pelo compilador.
Também, podemos ver no lado direito, obtivemos um erro de sintaxe ao mudar para um contexto de operação rigoroso. Devemos optar pelo modo estrito, para evitar utilizar uma palavra-chave reservada para nomes de variáveis.
Impede a eliminação de funções, variáveis e argumentos de funções:
O operador de eliminação em si é utilizado para remover uma propriedade de um objecto.
Deleting a property valid syntax O operador de apagar não pode ser utilizado para apagar uma função, variável ou argumentos.
delete can only remove properties
Quando em modo estrito, irá lançar uma excepção de Erro de Tipo. Isto acontece porque estamos a tentar eliminar uma propriedade, mas o valor em si.
Type Error Exception
O uso de eval fica restrito:
No JS a função eval é usada para executar expressões JavaScript em formato de string.
using eval p>Vamos tentar implementar o mesmo código em modo estrito:
a expressão eval não é executada