Directiva modo estricto
"use strict" es una directiva en JavaScript que se utiliza para habilitar el modo estricto. El modo estricto es una versión más segura y restringida de JavaScript, que ayuda a escribir un código más robusto y menos propenso a errores.
1. Cómo se usa "use strict"? #
Para activar el modo estricto, simplemente coloca la directiva "use strict"; al comienzo de un archivo JavaScript o al inicio de una función.
Ejemplo de uso global (para todo el archivo):
1"use strict"; 2 3function miFuncion() { 4 // Código bajo modo estricto 5}
Ejemplo de uso local (solo para una función):
1function miFuncion() { 2 "use strict"; 3 // Código bajo modo estricto solo en esta función 4}
Beneficios del Modo Estricto #
El modo estricto introduce cambios que ayudan a evitar errores comunes y a mejorar la calidad del código. Algunos de los principales beneficios son:
-
Prevención de malas prácticas:
- El modo estricto evita ciertas acciones que pueden llevar a errores difíciles de detectar.
Ejemplo: Variables no declaradas:
1"use strict"; 2x = 3.14; // Error: x is not definedSalida de consola x = 3.14; // Error: x is not defined ^ ReferenceError: x is not defined
Sin
"use strict", esto no lanzaría un error, lo que podría llevar a errores difíciles de rastrear. -
Errores lanzados para acciones peligrosas:
- Acciones que en modo normal no generan errores, en modo estricto sí lo hacen.
Ejemplo: Asignación a propiedades no modificables:
1"use strict"; 2const obj = {}; 3Object.defineProperty(obj, "prop", { value: 42, writable: false }); 4obj.prop = 77; // Error: Cannot assign to read only property 'prop'Salida de consola obj.prop = 77; // Error: Cannot assign to read only property 'prop' ^ TypeError: Cannot assign to read only property 'prop' of object '#<Object>' -
Prohibición del uso de palabras reservadas:
- El modo estricto impide el uso de palabras reservadas como
evaloargumentscomo nombres de variables.
Ejemplo:
1"use strict"; 2let eval = 17; // Error: Unexpected eval or arguments in strict mode 3console.log(eval);Salida de consola let eval = 17; // Error: Unexpected eval or arguments in strict mode ^^^^ SyntaxError: Unexpected eval or arguments in strict mode
- El modo estricto impide el uso de palabras reservadas como
-
Mejor optimización:
- Algunas optimizaciones que realizan los motores de JavaScript funcionan mejor en modo estricto, lo que puede mejorar el rendimiento del código.
-
Eliminación de características obsoletas:
- En modo estricto, ciertas características que se consideran malas prácticas o están obsoletas están deshabilitadas.
Ejemplo:
withstatement:1"use strict"; 2with (Math) { x = cos(2); } // Error: Strict mode code may not include a with statementSalida de consola with (Math) { x = cos(2); } // Error: Strict mode code may not include a with statement ^^^^ SyntaxError: Strict mode code may not include a with statement
Resumen del tema
Conceptos clave #
- Directiva
"use strict": activa el modo estricto a nivel global de archivo o local por función. - Restricciones Principales:
- Prohíbe la creación implícita de variables globales sin declarar (
x = 10lanzaReferenceError). - Bloquea asignaciones a propiedades de sólo lectura (
writable: false). - Establece
thiscomoundefineden funciones independientes no ligadas a objetos (en vez dewindow). - Prohíbe sintaxis obsoletas o inseguras como sentencias
withy el uso deeval/argumentscomo identificadores.
- Prohíbe la creación implícita de variables globales sin declarar (
- Módulos ES6: el código dentro de módulos (
import/export) y clases (class) opera en modo estricto por defecto.
Qué debes recordar #
"use strict" convierte errores silenciosos en excepciones explícitas y desactiva características problemáticas del lenguaje para crear código más seguro y optimizable.