The `arguments.callee` property holds the current function. It could be useful in an anonymous function, but its usage would make quite a few optimizations impossible so it was deprecated in the latest versions of JavaScript. In fact, EcmaScript 5 forbids its use in `strict` mode, according to the docs:

> Arguments objects for strict mode functions define non-configurable accessor properties named "caller" and "callee" which throw a TypeError exception on access.

This rule raises an issue when `arguments.callee` is used.

## Noncompliant Code Example

    [1, 2, 3, 4, 5].map(function(n) {
      if (n === 0) {
        return 1;
      } else {
        return arguments.callee(n - 1) * n;
      }
    });