Dokumentacja języka JavaScript 1.5:Funkcje:arguments:callee
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
Spis treści |
[edytuj] 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 |
[edytuj] 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.
[edytuj] Przykłady
[edytuj] 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)