¿QUÉ SIGNIFICA "USE STRICT" EN JAVASCRIPT?
"use strict" es una directiva que activa el modo estricto de JavaScript. Fue introducida en ECMAScript 5 (ES5) y su objetivo principal es ayudar a los desarrolladores a escribir código más seguro, limpio y predecible.Cuando se activa, el motor de JavaScript cambia su comportamiento en varios aspectos, eliminando ciertas tolerancias que tenía el lenguaje en su versión más antigua. Usarlo siempre en todos tus archivos o al menos en cada función.
¿Qué hace el Modo Estricto?
Evita errores silenciosos
En JavaScript, muchos errores pasan desapercibidos conocidos como errores silenciosos. Con el modo estricto, estos mismos errores lanzan excepciones visibles, lo que facilita enormemente la depuración.
Prohíbe el uso de variables sin declarar Sin "use strict", asignar una variable sin "let", "const" o "var" la crea automáticamente en el ámbito global siendo extremadamente peligroso pero con "use strict", lanza un "ReferenceError".
Hace el contexto de "this" más predecible
En modo normal, "this" dentro de una función no invocada con "new" o un objeto apunta al objeto global ( "window"en navegadores). Con el modo estricto, "this" será "undefined" en esos casos, evitando errores difíciles de rastrear.
Restricciones más estrictas
No permite duplicar nombres de propiedades en objetos literales prohíbiendo el uso de palabras reservadas como nombres de variables y elimina ciertas acciones ambiguas.
Mejor optimización del motor JavaScript
Al saber que el código sigue reglas más estrictas, el motor puede optimizar el rendimiento de forma más efectiva.
Ejemplo
- Sin "use strict":
function saludar() { nombre = "Ana"; // ¡Se crea una variable global! console.log(nombre); } saludar(); // "Ana" // La variable "nombre" ahora existe en el ámbito global - Con "use strict":
"use strict"; function saludar() { nombre = "Ana"; // ReferenceError: nombre is not defined console.log(nombre); } saludar();
¿Dónde y cómo se debe usar "use strict"?
- Al inicio del archivo para que se aplique a todo el script.
- Al inicio de una función afectando solo a esa función y sus funciones internas.
- No funciona si se coloca después de cualquier otra instrucción.