This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

arguments.callee

Свойство callee псевдомассива arguments хранит ссылку на функцию-родитель.

Описание

Предупреждение: Внимание: В ES5 strict 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

Совместимость с браузерами

Смотрите также