Veamos los diferentes escenarios, donde este simple cambio puede ayudarte.
Una variable no se añadirá al objeto global/ventana si no está declarada.
Por defecto, si se define una variable no declarada, se añade al objeto global/ventana. Esto puede crear un error e incluso puede ser difícil de encontrar.
La variable no declarada se añade al objeto global Para evitar estos escenarios, podemos declarar el uso estricto. El modo estricto no permite el uso de variables que no han sido declaradas.
Las variables no declaradas no se añaden al objeto global
No se pueden declarar variables que puedan ser utilizadas como futuras palabras de reserva.
Excepción de palabra de reserva
Como podemos ver en el ejemplo anterior, en el lado izquierdo pudimos declarar una variable y nombrarla let que es una palabra clave reservada de ES6. Técnicamente esto debería lanzar una excepción, pero es ignorado por el compilador.
Además, podemos ver en el lado derecho, que obtuvimos un error de sintaxis al cambiar a un contexto de operación estricto. Deberíamos optar por el modo estricto, para evitar el uso de una palabra clave reservada para los nombres de las variables.
Evita que uno elimine la función, las variables y los argumentos de la función:
El operador delete en sí mismo se utiliza para eliminar una propiedad en un objeto.
.Borrar una propiedad sintaxis válida
El operador delete no puede utilizarse para borrar una función variable o argumentos.
delete sólo puede eliminar propiedades Cuando esté en modo estricto lanzará una excepción de Error de Tipo. Esto ocurre porque estamos intentando eliminar una propiedad pero el valor en sí.
.Excepción de error de tipo
El uso de eval se restringe:
En JS la función eval se utiliza para ejecutar expresiones de JavaScript en un formato de cadena.
.usando eval
Intentemos implementar el mismo código en modo estricto:
la expresión eval no se ejecuta