Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
elevación de funciones para llamadas a funciones internas

Tenga en cuenta: ^ Esta pregunta no es un duplicado de una pregunta let/const ya que no está relacionada. La misma pregunta permanece sin importar si fue var , let o const ya que eso no está relacionado con la intención de la pregunta.


Realmente agradecería alguna aclaración sobre la elevación de funciones dentro de otra función. Esto es lo que entiendo claramente hasta ahora:

Esto no funciona porque se llama a anotherFunc en el archivo antes de que se cree y const no se eleva antes de que se cree.

 const someFunc = () => { console.log('someFunc called'); } anotherFunc(); // anotherFunc is not defined error const anotherFunc = () => { console.log('anotherFunc called'); }

Esto funciona porque anotherFunc es una declaración de función y se elevan a la parte superior según las reglas de JS:

 anotherFunc(); // anotherFunc called function anotherFunc() { console.log('anotherFunc called'); }

No funciona porque es una expresión de función y dado que están asignados a una variable var , la variable se elevará a la parte superior y no estará definida inicialmente:

 anotherFunc(); // anotherFunc is not a function at <anonymous> var anotherFunc = function () { console.log('anotherFunc called'); }

Entonces, ¿alguien puede explicarme por qué esto funciona (ver más abajo)? Este es un paso más profundo de todo lo explicado en línea.

Si una función se declara más tarde pero se llama dentro de otra función antes, ¿por qué funciona? ¿Esto tiene algo que ver con el orden de ejecución de JS?

 const someFunc = () => { console.log('someFunc called'); anotherFunc(); } const anotherFunc = () => { console.log('anotherFunc called'); } someFunc(); // 'someFunc called' 'anotherFunc called'

¿Es porque JS asigna primero someFunc y anotherFunc en la memoria, por lo que llamarlos más tarde no importa en qué orden estén?

Por último, ¿esto difiere para las funciones const/let/var en el mismo escenario (el último)?

¡Muchas gracias por la aclaración!

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El contexto de ejecución de JavaScript tiene dos componentes:

  • Memoria (entorno variable)
  • Código (hilo de ejecución): sincronización y subproceso único, lo que significa que JS solo puede hacer las cosas una por una y en un orden determinado (una tras otra)

Entonces, la razón por la que esto funciona:

 const someFunc = () => { console.log('someFunc called'); anotherFunc(); } const anotherFunc = () => { console.log('anotherFunc called'); } someFunc(); // 'someFunc called' 'anotherFunc called'

... es porque JS primero asigna someFunc y anotherFunc a undefined dentro de la memoria (como sospechaba en mi pregunta). Las declaraciones de función también se guardan aquí como la función completa.

Esta es la fase de asignación de memoria. Luego ejecuta la fase de ejecución del código.

JS va línea por línea y agrega los valores a las variables.

Si el valor de la clave guardada en la memoria es una función, crea otro contexto de ejecución interno y, una vez más, ejecuta una asignación de memoria y una fase de ejecución de código para esa función en particular.

Entonces en mi caso:

  1. Se crea el contexto de ejecución.
  2. someFunc y anotherFunc se asignan a la memoria como undefined .
  3. Se llama a someFunc y se crea un nuevo contexto de ejecución interno.
  4. se ejecuta console.log .
  5. anotherFunc se guarda en undefined en la memoria dentro del contexto de ejecución de someFunc . Se ejecuta la ejecución del código y se anotherFunc a otra función y se crea otro contexto de ejecución para esa función. Como no tiene variables, etc., simplemente ejecuta console.log .
  6. anotherFunc está completo y su contexto de ejecución se elimina. Le devuelve su poder a someFunc (esto también sucede cuando regresa una función).
  7. someFunc está completo y su contexto de ejecución se elimina. Devuelve su poder al Contexto de ejecución JS principal (esto también sucede cuando regresa una función).

Este chico lo explica todo muy claro: https://youtu.be/iLWTnMzWtj4

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda