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

180
Vistas
¿Cómo identifica el tiempo de ejecución de Javascript setTimeout() como una API WEB?

Cuando el tiempo de ejecución de javascript encuentra el método setTimeout(), lo envía a la tabla de eventos. ¿Cómo sabe el tiempo de ejecución que setTimeout() es una API WEB? ¿Primero busca el método setTimeout() en el contexto actual y luego, si no lo encuentra, lo asume como una API WEB?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando el tiempo de ejecución de javascript encuentra el método setTimeout(), lo envía a la tabla de eventos.

JavaScript no "sabe" ni le importa lo que hace setTimeout . :-) Es solo que setTimeout es una de las funciones definidas en el entorno del host proporcionadas al motor de JavaScript por el host (el navegador, en su ejemplo). Cuando usa JavaScript para llamar a la función, la implementación de la función (proporcionada por el entorno host) se ejecuta con la información que proporciona. Es el host, no el motor de JavaScript, el que sabe qué hacer con los argumentos que proporcionas a setTimeout .

Cuando el host (el navegador o Node.js o lo que sea) necesita crear un nuevo entorno de tiempo de ejecución (por ejemplo, para una ventana), una de las cosas que hace es crear un objeto para que sea el objeto global proporcionado por el host para ese entorno. (más correctamente llamado reino ), incluida la colocación de cualquier propiedad en ese objeto (como setTimeout ) que proporciona características definidas por el host. Proporciona ese objeto al motor de JavaScript a través de lo que la especificación de JavaScript llama la operación abstracta InitializeHostDefinedRealm . Cuando el motor de JavaScript ejecuta su código que usa setTimeout , ve el identificador setTimeout y busca en el contexto de ejecución actual para ver si setTimeout está definido allí; si no es así, el motor examina el contexto de ejecución principal, y así sucesivamente, hasta que llega al contexto de ejecución global, que obtiene sus globales del entorno global proporcionado por el host (en parte, también tiene otros globales). Entonces, al encontrar la función que coincide con setTimeout , el motor de JavaScript llama a esa función, que ejecuta el código definido por el host para la función, que establece el temporizador.

Entonces, el motor de JavaScript no sabe qué hace setTimeout , solo que hay una función setTimeout en el objeto global que obtuvo del host.

about 4 years ago · Santiago Trujillo Denunciar

0

En términos de identificar qué función ejecutar, no hay ninguna diferencia si una función está integrada en el motor o si se agrega en tiempo de ejecución (este hecho es realmente útil, ya que permite que las funciones se "polillenen" si el motor no lo hace). no proporcionarlos).

Cuando escribe foo() , JS en realidad busca una variable con ese nombre (esta unificación de variables, propiedades, funciones y métodos es una característica inusual de JS). Lo busca primero en el ámbito local, luego en el principal de ese ámbito, y así sucesivamente hasta la "cadena de ámbito" .

El último lugar donde mira es el "objeto global", que en un navegador es el objeto de window . Entonces, si define window.foo como una función, puede llamar a foo() desde cualquier lugar que no tenga su propia función llamada foo en el alcance.

Las funciones integradas funcionan de la misma manera: cuando se inicia el motor JS, (conceptualmente) define un montón de funciones en el objeto de la window , con implementaciones especiales que se refieren a operaciones internas en el motor en lugar de estar compuestas por código JS.

Entonces, cuando llama a setTimeout , JS recorre la cadena de alcance y, si no encuentra nada más, encontrará la función setTimeout registrada por el motor y la ejecutará. Luego, el motor hace lo que quiere hacer con eso; con suerte, algo que cumpla con los comportamientos descritos en el estándar ECMAScript actual.

about 4 years ago · Santiago Trujillo 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