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

272
Vistas
¿Por qué veo una alerta de evaluación insegura cuando uso setTimeout con cadenas?

Aquí está el ejemplo de cómo aparece en las herramientas de desarrollo de Chrome:

 setTimeout(console.log(`String`), 100);

Cadena Se negó a evaluar una cadena como JavaScript porque 'unsafe-eval' no es una fuente de script permitida en la siguiente directiva de Política de seguridad de contenido: "script-src'self' 'unsafe-inline' https:".

¿Qué significa esta alerta y cuál es el problema de seguridad de usar setTimeout con cadenas?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estás usando setTimeout mal.

Cuando agrega paréntesis después de una función en JS, inmediatamente llama a la función y "reemplaza" la expresión con el valor de retorno de esa función.

Pero, con setTimeout , no desea llamar a esa función, ¡quiere que setTimeout la llame! Para hacer eso, le das la función a setTimeout sin llamarlo, y setTimeout lo llamará internamente cuando suene el temporizador.

Pero su código llama a la función, console.log , y solo le da su valor de retorno ( undefined ) a setTimeout . Sin embargo, setTimeout no arroja un error: tiene una "característica" antigua que, si le pasa una cadena, la evalúa como si hubiera usado eval .

undefined no es una cadena, pero tampoco es una función, por lo que cuando el temporizador expire, setTimeout lo convertirá en una cadena ( "undefined" ) e intentará eval . Por eso recibes la advertencia.


Puede solucionar esto pasando su función a setTimeout "de la buena manera": envuelva su llamada en otra función. De esta manera, su función externa llamará a console.log cuando se llame, por lo que puede pasar eso a setTimeout :

 setTimeout(() => console.log(`String`), 100);
about 4 years ago · Juan Pablo Isaza 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