Durante mucho tiempo, JavaScript evolucionó sin problemas de compatibilidad. Se agregaron nuevas funciones al idioma, mientras que la funcionalidad anterior no cambió.
Eso tenía la ventaja de no romper nunca el código existente. Pero la desventaja fue que cualquier error o decisión imperfecta tomada por los creadores de JavaScript quedaba atrapado en el lenguaje para siempre.
Este fue el caso hasta 2009 cuando apareció ECMAScript 5 (ES5). Agregó nuevas funciones al lenguaje y modificó algunas de las existentes. Para que el código antiguo siga funcionando, la mayoría de estas modificaciones están desactivadas de forma predeterminada. Debe habilitarlos explícitamente con una directiva especial: "use strict"
.
La directiva parece una cadena: "use strict"
o 'use strict'
. Cuando se ubica en la parte superior de un guión, todo el guión funciona de manera "moderna".
Por ejemplo:
"uso estricto"; // este código funciona de forma moderna ...
Muy pronto aprenderemos funciones (una forma de agrupar comandos), así que tengamos en cuenta de antemano que "use strict"
se puede poner al principio de una función. Hacer eso habilita el modo estricto solo en esa función. Pero normalmente la gente lo usa para todo el guión.
Asegúrese de que "uso estricto" esté en la parte superior
Asegúrese de que "use strict"
esté en la parte superior de sus scripts; de lo contrario, es posible que el modo estricto no esté habilitado.
El modo estricto no está habilitado aquí:
alerta("algún código"); // "uso estricto" a continuación se ignora; debe estar en la parte superior "uso estricto"; // el modo estricto no está activado
Sólo pueden aparecer comentarios encima de "use strict"
.
No hay forma de cancelar use strict
No existe ninguna directiva como "no use strict"
que revierta el motor al comportamiento anterior.
Una vez que entramos en modo estricto, no hay vuelta atrás.
Cuando utiliza una consola de desarrollador para ejecutar código, tenga en cuenta que no use strict
de forma predeterminada.
A veces, cuando use strict
marca la diferencia, obtendrás resultados incorrectos.
Entonces, ¿cómo use strict
en la consola?
Primero, puedes intentar presionar Shift + Enter para ingresar varias líneas y poner use strict
en la parte superior, así:
'uso estricto'; <Mayús+Entrar para una nueva línea> // ...tu código <Entrar para ejecutar>
Funciona en la mayoría de los navegadores, concretamente Firefox y Chrome.
Si no es así, por ejemplo en un navegador antiguo, existe una manera fea pero confiable de garantizar use strict
. Ponlo dentro de este tipo de envoltorio:
(función() { 'uso estricto'; // ...tu código aquí... })()
La pregunta puede parecer obvia, pero no lo es tanto.
Se podría recomendar comenzar los scripts con "use strict"
... ¿Pero sabes qué es genial?
El JavaScript moderno admite “clases” y “módulos”, estructuras de lenguaje avanzadas (seguramente llegaremos a ellas), que permiten use strict
de forma automática. Por lo tanto, no necesitamos agregar la directiva "use strict"
, si las usamos.
Entonces, por ahora "use strict";
es un invitado bienvenido en la parte superior de tus guiones. Más adelante, cuando todo su código esté en clases y módulos, podrá omitirlo.
A partir de ahora, debemos conocer use strict
en general.
En los próximos capítulos, a medida que aprendamos las características del lenguaje, veremos las diferencias entre los modos estricto y antiguo. Por suerte, no hay muchos y, de hecho, mejoran nuestras vidas.
Todos los ejemplos de este tutorial asumen el modo estricto a menos (muy raramente) que se especifique lo contrario.