Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Podsumowanie

Określa aktualnie wykonywaną funkcję.

Własność obiektów arguments i Function.arguments (Wycofywany)
Zaimplementowano w: JavaScript 1.2

JavaScript 1.4: callee wycofywany jako własność Function.arguments, zachowany jako własność zmiennej lokalnej arguments funkcji.

Wersja ECMA: ECMA-262

Opis

callee jest własnością zmiennej lokalnej arguments dostępnej wewnątrz wszystkich obiektów funkcji; callee jako własność Function.arguments nie jest już używana (również sam obiekt Function.arguments jest wycofywany).

arguments.callee pozwala anonimowym funkcjom odwoływać się do siebie samych, co jest potrzebne w przypadku rekursywnych anonimowych funkcji.

Słowo kluczowe this nie odwołuje się do aktualnie wykonywanej funkcji. Użyj własności callee, aby odwołać się do funkcji z poziomu jej ciała.

Przykłady

Przykład: Zastosowanie arguments.callee w anonimowych funkcjach rekursywnych

Funkcja rekursywna musi mieć możliwość odwołania się do siebie samej. Zazwyczaj funkcja odwołuje się do samej siebie wykorzystując swoją nazwę. Jednakże anonimowa funkcja nie posiada nazwy i jeśli w łańcuchu zasięgu nie istnieje zmienna odwołująca się do tej funkcji, tj. funkcja nie jest przypisana do żadnej zmiennej, to funkcja ta nie ma możliwości odwołania się do siebie samej (anonimowe funkcje można tworzyć przy użyciu wyrażenia function lub konstruktora Function). W tym miejscu wkracza arguments.callee.

Poniższy przykład definiuje funkcję, która z kolei definiuje i zwraca funkcję obliczającą silnię.

function makeFactorialFunc() {
   alert('tworzenie funkcji obliczającej silnię!');
   return function(x) {
      if (x <= 1)
         return 1;
      return x * arguments.callee(x - 1);
   };
}

var result = makeFactorialFunc()(5); // zwraca 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




Autorzy i etykiety dokumentu

 Autorzy tej strony: teoli, Mgjbot, Diablownik, Ptak82, Marcoos, gandalf
 Ostatnia aktualizacja: teoli,