--- title: arguments.callee slug: Web/JavaScript/Reference/Functions/arguments/callee translation_of: Web/JavaScript/Reference/Functions/arguments/callee ---
Свойство callee псевдомассива arguments хранит ссылку на функцию-родитель.
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 | Status | Comment |
|---|---|---|
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Initial definition. Implemented in JavaScript 1.2 |
| {{SpecName('ES5.1', '#sec-10.6', 'Arguments Object')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ES6')}} | |
| {{SpecName('ESDraft', '#sec-arguments-exotic-objects', 'Arguments Exotic Objects')}} | {{Spec2('ESDraft')}} |
{{Compat}}