Puedo crear una función recursiva en una variable así:
/* Count down to 0 recursively.
*/
var functionHolder = function (counter) {
output(counter);
if (counter > 0) {
functionHolder(counter-1);
}
}
Con esto, functionHolder(3);
saldría 3
2
1
0
. Digamos que hice lo siguiente:
var copyFunction = functionHolder;
copyFunction(3);
saldría 3
2
1
0
como arriba. Si luego cambié de la functionHolder
siguiente manera:
functionHolder = function(whatever) {
output("Stop counting!");
Entonces functionHolder(3);
daría Stop counting!
, como se esperaba.
copyFunction(3);
ahora da lo 3
Stop counting!
que se refiere functionHolder
, no la función (a la que él mismo apunta). Esto podría ser deseable en algunas circunstancias, pero ¿hay alguna forma de escribir la función para que se llame a sí misma en lugar de a la variable que la contiene?
Es decir, ¿es posible cambiar solo la línea functionHolder(counter-1);
para que seguir todos estos pasos aún dé 3
2
1
0
cuando llamemos copyFunction(3);
? Lo intenté this(counter-1);
pero eso me da el error this is not a function
.