Прикладной код

Устаревшие свойства caller/callee

Устаревшие свойства caller/callee

При написании или редактировании кода возникает ошибка «Использование arguments.callee устарело».

Причина

Свойства arguments.caller и arguments.callee устарели и не используются при написании кода.

Решение

Воспользуйтесь названными функциями вместо arguments.callee.

Пример

Код с ошибкой.

function foo(n) {
        if (n <= 0) {
                return;
        }
 
        arguments.callee(n - 1);
}
 
[1, 2, 3, 4, 5].map(function(n) {
        return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});

Код без ошибки.

function foo(n) {
        if (n <= 0) {
                return;
        }
 
        foo(n - 1);
}
 
[1, 2, 3, 4, 5].map(function factorial(n) {
        return !(n > 1) ? 1 : factorial(n - 1) * n;
});