El modo estricto es una funcionalidad que le permite al motor de JavaScript cambiar la manera en que ejecuta el código. En este modo, se reduce las cosas que podemos hacer, esto es bueno porque permite manejar errores que son poco perceptibles o que el motor de JavaScript sobreentiende y ayuda a su compilación para corregirlos.
Este en el código colocando en la primera línea "use strict" para todo el archivo. También puede utilizarse en la primera línea de una función, pero no para un bloque en específico.
Ejemplo usando el modo estricto
Si realizas el siguiente código que contiene una asignación sin una declaración, no va a ocurrir un error y el programa se va a ejecutar con normalidad.
nombre ="Andres"console.log(nombre)// "Andres"
En modo estricto, no te permitirá realizar esto y provocará un error.
"use strict";nombre ="Andres"console.log(nombre)// ReferenceError: nombre is not defined
Ejemplo usando el modo estricto en una función
Si realizas el siguiente código que retornas una variable no declarada, no va a ocurrir un error y el programa se va a ejecutar con normalidad.
functionmyFunction(){return pi =3.14}console.log(myFunction())// 3.14
En modo estricto, no te permitirá realizar esto y provocará un error.
"use strict";functionmyFunction(){return pi =3.14}console.log(myFunction())// ReferenceError: pi is not defined
El modo estricto tiene varios cambios en la semántica normal de JavaScript:
Elimina algunos errores silenciosos de JavaScript cambiándolos para que lancen errores.
Corrige errores que hacen difícil para los motores de JavaScript realizar optimizaciones: a veces, el código en modo estricto puede correr más rápido que un código idéntico pero no estricto.
Prohíbe cierta sintaxis que probablemente sea definida en futuras versiones de ECMAScript.
La historia de javascript es el mejor ejemplo de la aplicación de metodologías agiles :D. Un software evolucionando con el tiempo a medida que la necesidad lo amerita o en este caso el alcance del proyecto cambia. El modo estricto otra de las mejoras para escribir un mejor código javascript.
Algo que apuntar sobre el futuro. El modo estricto funciona por defecto en aplicaciones que importan/exportan otros archivos js (módulos). Por ejemplo una web estática importando script type=module o una web usado un framework. Así que en el futuro al desarrollar una web en las prácticas actuales el modo estricto ya está bajo el capó.
Algo que no sabía es que los módulos tienen el "modo estricto" de forma implícita, esto significa que todo modulo esta en "modo estricto", sin necesidad de declararlo con el use strict
functionmyStrictFunction(){// because this is a module, I'm strict by default}exportdefault myStrictFunction;
El modo estricto añade restricciones al lenguaje para prevenir errores comunes y mejorar la seguridad del código. Algunas de las restricciones incluyen:
No se pueden usar variables sin declarar previamente.
No se puede usar una palabra reservada como nombre de variable o función.
No se puede hacer una asignación a una propiedad no escribible.
No se puede usar un objeto global como objeto "this" en una función sin objeto.
Se recomienda usar 'use strict' en todos los archivos JavaScript para garantizar una mejor calidad del código y prevenir errores.
En general no se suele usar ya que tiene usos muy específicos como "arreglar" el uso de var, pero como no se suele usar var en la gran mayoría de proyectos no usamos el strict mode.
Aunque seguro en el futuro encontrarás un proyecto en el que te resulte útil.
Esta es la justificación para la creación de un "loopy mode" o "modo poco riguroso" y de un modo "estricto", según la documentación de Mozilla:
El modo estricto cambia algunos errores de sintaxis tolerados en modo no estricto y los convierte en errores. JavaScript fue diseñado de modo que fuera fácil para programadores novatos, y puede haber operaciones semánticas que deberían ser errores pero son tratadas como libres de error. A veces esto sirve para solucionar el problema en el momento, pero puede crear problemas más graves en el futuro. El modo estricto trata las equivocaciones como errores, para que se puedan descubrir y subsanar inmediatamente.