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® 2025 Language Specification
# sec-arguments-exotic-objects

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
callee
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Deprecated. Not for use in new websites.

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