This page was translated from English by the community.Learn more and join the MDN Web Docs community.
arguments.callee
Свойствоcallee псевдомассива arguments хранит ссылку на функцию-родитель.
In this article
Описание
Предупреждение:В ES5strict mode использованиеarguments.callee запрещено.
Зачем вообще использоватьarguments.callee?
В ранних версиях javaScript отсутствовала такая фишка, какNamed Function Expression и единственным спасением было свойствоcallee. К примеру:
js
var f = function test() { alert(typeof test); //undefined alert(typeof arguments.callee); //function};В нынешние времена, когда мы уже можем работать сNFE, надобность в использовании свойстваcallee сама собой отпадает**.**
js
var f = function test() { alert(typeof test); //function};Действительно незаменимым оно остаётся всего в одной ситуации. Когда мы создаём анонимную функцию напрямую через конструкторFunction.
js
var b = new Function("", "alert(typeof arguments.callee)");Пример использования
>Использованиеarguments.callee для создания рекурсии
js
var factorial = function (n) { return n == 1 ? 1 : n * arguments.callee(n - 1);};factorial(7);Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-arguments-exotic-objects> |