arguments.callee
Свойство callee псевдомассива arguments
хранит ссылку на функцию-родитель.
Описание
Предупреждение: Внимание: В ES5 strict mode использование arguments.callee
запрещено.
Зачем вообще использовать arguments.callee
?
В ранних версиях javaScript отсутствовала такая фишка, как Named Function Expression и единственным спасением было свойство callee. К примеру:
var f = function test() {
alert(typeof test); //undefined
alert(typeof arguments.callee); //function
};
В нынешние времена, когда мы уже можем работать с NFE, надобность в использовании свойства callee сама собой отпадает**.**
var f = function test() {
alert(typeof test); //function
};
Действительно незаменимым оно остаётся всего в одной ситуации. Когда мы создаём анонимную функцию напрямую через конструктор Function.
var b = new Function("", "alert(typeof arguments.callee)");
Пример использования
Использование arguments.callee
для создания рекурсии
var factorial = function (n) {
return n == 1 ? 1 : n * arguments.callee(n - 1);
};
factorial(7);
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-arguments-exotic-objects |
Совместимость с браузерами
BCD tables only load in the browser