Свойство 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);
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Стандарт | Initial definition. Implemented in JavaScript 1.2 |
ECMAScript 5.1 (ECMA-262) Определение 'Arguments Object' в этой спецификации. |
Стандарт | |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Arguments Exotic Objects' в этой спецификации. |
Стандарт | |
ECMAScript Latest Draft (ECMA-262) Определение 'Arguments Exotic Objects' в этой спецификации. |
Черновик |
Browser compatibility
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Да) | (Да) | (Да) | (Да) | (Да) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |