es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Me estoy confundiendo por qué estoy obteniendo el segundo resultado primero..?

<p><!-- begin snippet: js hide: false console: true babel: false --></p>

<p><!-- language: lang-js --></p>

<pre><code>function first() {
  console.log("first");
}

function second() {
  console.log("second");
}

first(second());
</code></pre>

<p><!-- end snippet --></p>

<p>Ahora el problema es que cuando llamo a la (<strong>primera función</strong>) esto me está entregando la (<strong>segunda</strong>) primero, solo quiero saber qué está sucediendo exactamente aquí, ¿cómo funciona esto? y ¿cómo se está pasando el valor de la segunda función dentro de la primera función? (porque no hay parámetro dentro de la primera función)</p>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema es que al llamar a first(), se llama inmediatamente a second() como argumento y su valor de retorno (que es undefined ya que no hay una declaración de retorno explícita) se pasa como argumento a first(). Esto significa que second() se ejecuta antes de first().

    Para solucionar esto, puedes pasar second como una función de devolución de llamada sin llamarla usando su nombre como referencia:

    function first(callback) {
      console.log("first");
      callback();
    }
    
    function second() {
      console.log("second");
    }
    
    first(second);
    

    De esta manera, al llamar a first(second), second no se llama inmediatamente, sino que se pasa como referencia a first() y se ejecuta solo dentro del ámbito de first() donde se llama como callback().

Comments are closed.