Naišao sam na ovaj primer na internetu i ne mogu baš da shvatim kako radi. Console log u a() funkciji ispisuje 1,6,16 i 36 tokom 4 iteracije, a krajnji rezultat je 42. Dakle, u poslednje izvršenju funkcije a, foo je 36 (linija 5), a na liniji 6 foo dobija i 3*2 iz funkcije b.
Zašto i kako se to dešava? Ja sam očekivao da će kranji rezultat biti 36, tj. da će a() vratiti prvi rezultat veći od 20 bez obzira na sve ostalo.
Kod:
var val = a(1);
console.log("Krajnji rezultat: " + val); // 42
function a(foo){
console.log(foo); // 1,6,16,36
if(foo > 20) return foo;
return b(foo+2);
}
function b(foo){
return c(foo) + 2;
}
function c(foo){
return a(foo*2);
}