Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

183
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!