Podsumowanie
Określa aktualnie wykonywaną funkcję.
Własność obiektów arguments i Function.arguments (Wycofywany) | |
Zaimplementowano w: | JavaScript 1.2
JavaScript 1.4: |
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