Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
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