callee
Resumen
Especifica la función que se está ejecutando actualmente.
Descripción
callee
es una propiedad de la variable local arguments
disponible dentro de todos los objetos function; callee
como una propiedad de Function.arguments
ya no se utiliza. (Function.arguments
en sí mismo está también desaconsejado.)
arguments.callee
permite a funciones anónimas referirse a ellas mismas, lo cual es necesario en funciones anónimas recursivas.
La palabra clave this
no se refiere a la función que se ejecuta actualmente. Use la propiedad callee
para referirse a la función dentro del cuerpo de la función.
Ejemplos
Ejemplo: Usando arguments.callee
en funciones anónimas recursivas
Una función recursiva debe ser capaz de referirse a sí misma. Típicamente, una función se refiere a sí misma por su nombre. Sin embargo, una función anónima no tiene nombre y por tanto es una variable de referencia para ella, es decir, si la función no está asignada a ninguna variable, la función no puede referirse a sí misma. (Se pueden crear funciones anónimas mediante una expresión function
o el constructor Function
.) Aquí es donde entra arguments.callee
.
El siguiente ejemplo define una función, la cuál, en cada turno, define y devuelve una función factorial.
function makeFactorialFunc() {
alert("making a factorial function!");
return function (x) {
if (x <= 1) return 1;
return x * arguments.callee(x - 1);
};
}
var result = makeFactorialFunc()(5); // returns 120 (5 * 4 * 3 * 2 * 1)
this example isn't very practical, but then again, there are few practical cases where arguments.callee is necessary, and most of the those cases involve closures