Las alertas se ejecutan de forma síncrona, por lo cual no muestra el valor de
y
antes de que termine de ejecutarse la segunda función. Lo que necesitas hacer es utilizar una
promesa para acceder de forma asíncrona a los valores actualizados luego de la ejecución de ambas funciones.
Código Javascript
:
Ver originalvar x = 10,
y = 20;
function f1(y){
x = x + y;
function f2(){
y = y + 5;
return new Promise(c => c([x, y]));
}
return f2();
}
f1(x).then((z) => {
alert(z[0]); //20
alert(z[1]); //15
});
DEMO
En la línea de retorno de la promesa, devuelvo ambos valores dentro de un arreglo puesto que no se puede devolver más de un valor excepto que se encapsulen todos en uno, como en un arreglo. Por ello es que accedo a ambos por medio de los índices 0 y 1 para mostrarlos en las alertas.