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