Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

222
Vistas
El uso estricto no funciona cuando llamo a mi función izada

Tengo el siguiente código

 "use strict"; x = 12; function myFunction() { } myFunction();

entonces estoy usando use strict en la parte superior de mi secuencia de comandos y ahora estoy en modo estricto, por lo que no puedo tener una variable no declarada como x

Eso me da el siguiente error en mi consola

Uncaught ReferenceError: x is not defined .

Pero cuando ejecuto este código

 myFunction(); "use strict"; x = 12; function myFunction() { } console.log('the script continues...')

No obtengo el mismo error para mi variable no declarada x . Como puede ver, el script continúa ejecutándose.

Porqué es eso ? ¿Por qué no obtengo el mismo error cuando trato de llamar a mi función izada, así que llame a la función antes de que se declare? ¿Por qué afecta el ámbito global?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Como dice en la documentación de MDN para el modo estricto , el "use strict"; La secuencia es solo una directiva de modo estricto si es lo primero en el archivo que no sea un comentario. Con su llamada de función encima, ya no es lo primero en el archivo y, por lo tanto, no es una directiva de modo estricto; en cambio, es solo un literal de cadena independiente que no usa nada.

Dado que su código no está en modo estricto, x = 12; está asignando un valor a un identificador no declarado, que (en modo suelto) crea un global implícito . (Más en mi publicación antigua en mi antiguo blog anémico: The Horror of Implicit Globals ). Esta es una de las muchas razones por las que usar el modo estricto es Good Thing ™, porque al asignar a un identificador no declarado es el error que siempre debería tener. estado.


Nota al margen: otra forma de usar el modo estricto es usar módulos nativos en lugar del "use strict"; . Los módulos, como casi todos los ámbitos nuevos en JavaScript desde ES2015, son estrictos de forma predeterminada (y tienen otros beneficios, como su propio ámbito y la capacidad de declarar dependencias entre ellos).

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda