eslint/no-caller Correctness ​
What it does ​
Disallow the use of arguments.caller or arguments.callee.
Why is this bad? ​
The use of arguments.caller and arguments.callee make several code optimizations impossible. They have been deprecated in future versions of JavaScript and their use is forbidden in ECMAScript 5 while in strict mode.
js
function foo() {
var callee = arguments.callee;
}This rule is aimed at discouraging the use of deprecated and sub-optimal code by disallowing the use of arguments.caller and arguments.callee. As such, it will warn when arguments.caller and arguments.callee are used.
Example ​
Examples of incorrect code for this rule:
js
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;
});Examples of correct code for this rule:
js
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;
});How to use ​
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny no-callerjson
{
"rules": {
"no-caller": "error"
}
}