JavaScript es un lenguaje dinámico, es decir, para elaborar, cada componente de Javascript es dinámico desde las variables hasta el propio código. Con la ayuda de JavaScript, puede crear variables en tiempo de ejecución, cambiar su tipo de datos, crear nuevas funciones o reemplazar la lógica existente. En otras palabras, mientras usa JavaScript, el desarrollador tiene el control casi total. ¿Por qué casi? Hay un dicho famoso,
«Con un gran poder viene una gran responsabilidad.» —Ben Parker
JavaScript sigue este principio muy claramente, mientras que en el proyecto de un codificador de tirador JavaScript funciona como uno de los mejores lenguajes de programación que existen, puede funcionar de forma totalmente aleatoria en manos de un novato. Este comportamiento aleatorio, si bien es una parte integral para generar el deseo de aprender JavaScript de adentro hacia afuera, puede generar ciertas complejidades, especialmente si se usa en un proyecto. Los desarrolladores de JavaScript agregaron una nueva función en ES5 conocida como modo estricto., que se supone que deshabilita ciertos comportamientos del lenguaje para disminuir el comportamiento aleatorio y aumentar la detectabilidad del código mal escrito. Este conjunto de restricciones hizo que el código fuera mucho más seguro y mantuvo un alto nivel de codificación en general. Los códigos JavaScript se optimizan antes de que el motor los ejecute, utilizando el modo estricto se vio que los desarrolladores ahora podían escribir programas altamente optimizados. No solo lo recomiendan los desarrolladores, sino que también es una inclusión obligatoria de los estándares de codificación industrial. Sintaxis: para usar el modo estricto en su secuencia de comandos, solo necesitamos ejercitar la siguiente línea a continuación, el modo estricto, también conocido como pragma de modo estricto, tiene su propio alcance y puede afectar todo el archivo o métodos individuales dependiendo del mismo.
"use strict";
Funcionalidades: ahora sabemos que el modo estricto es básicamente un modo de JavaScript que está mucho más obsesionado con la sintaxis correcta y otros paradigmas lógicos que solía permitir sin mucho sondeo. Pero, ¿cuáles son esos errores sintaxiales y lógicos que ya no se permiten en el modo estricto? La siguiente es una breve lista de algunos importantes.
- Declaración de variable global automática: este es uno de los mayores problemas en JavaScript, sin usar el modo estricto si usa por error una variable sin su definición, JavaScript no arroja un error sino que declara la variable en el alcance global que a menudo conduce a aleatoriedad y salidas no deseadas. Con el modo estricto habilitado, arrojará un error de referencia regular que notifica que la variable que se utilizará nunca se definió. Fuente:
"use strict"; // Turn on strict mode. a = 1;
- Producción:
Uncaught ReferenceError: a is not defined
- Nota: En JavaScript, los objetos también son variables, por lo que también requiere la palabra clave ‘var’, ‘let’ o ‘const’ para definir una.
- Eliminación de cualquier elemento de JavaScript: este es un gran cambio con respecto al modo normal, ya que en el modo estricto no se permite eliminar ninguna variable o función. Esto hace que el código sea mucho más optimizable, ya que los ámbitos son estáticos y no cambian a lo largo de la vida. Fuente:
"use strict"; // Turn on strict mode. var a = 1; delete a;
- Producción:
Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
- Nota: puede preguntar por qué el error dice no calificado . JavaScript proporciona la funcionalidad en la que puede definir una propiedad de un objeto como eliminable que califica la propiedad para eliminarse en modo estricto.
- Uso de palabras clave reservadas como nombres de variables: a diferencia de la mayoría de los otros idiomas, JavaScript permite el uso de palabras clave reservadas como nombres de variables que no están permitidas en el modo estricto. Fuente:
"use strict"; // Turn on strict mode. var eval = 5;
- Producción:
Uncaught SyntaxError: Unexpected eval or arguments in strict mode.
- Duplicación de nombres de parámetros: a diferencia de la mayoría de los demás lenguajes de programación, JavaScript permite el uso de nombres de parámetros duplicados, lo que no está permitido en el modo estricto. Fuente:
// Normal mode function myFunc(a, a){ console.log(a); } myFunc(0, 10);
- Producción
10
// Strict mode "use strict"; // Turn on strict mode. function myFunc(a, a){ console.log(a); } myFunc(0, 10);
- Producción:
Uncaught SyntaxError: Duplicate parameter name not allowed in this context
Referencias: