es frecuente llamar una función al cabo de otra con el propósito de secuenciar (ordenar) la ejecución del código:
function a(m) { var b = m + 3; c(m); } a(7);
en este caso, se pretenden ejecutar las órdenes de la función a() antes de llamar a la función c() porque, probablemente, la ejecución de la función c() dependa del resultado de la función a(). sucede, no obstante, que javascript es asincrónico: la asincronía en javascript puede provocar que la función de retorno c() se ejecute aún cuando no se ha resuelto el valor de la variable b, esto es, antes de tiempo:
function c(m) { console.log(m); } function a(m) { var b = m + 3; c(m); } a(7);
en suma: se imprimiría un siete en consola antes de que se haya resuelto el valor de b. no hay mayor problema en este ejemplo: la ejecución de c() no depende de a(). no obstante, si le pasamos la variable b como argumento a la función c:
function a(m) { var b = m + 3; c(b); } a(7);
javasript no llamará a la función c() hasta que no se haya obtenido el resultado del argumento b, es decir, primero resolverá b y después llamará a c(), que devolverá, en este caso, un diez en consola.