no-caller
Disallow the use of arguments.caller
or arguments.callee
使用 arguments.caller
和 arguments.callee
会使一些代码无法优化。在未来的 JavaScript 版本中,它们已经被废弃,在 ECMAScript 5 中,可以使用严格模式下禁用它们。
function foo() {
var callee = arguments.callee;
}
规则细节
本规则旨在通过禁止使用 arguments.caller
和 arguments.callee
来阻止使用废弃的和次优的代码。因此,当使用 arguments.caller
和 arguments.callee
时,它将发出警告。
使用此规则的错误示例:
Open in Playground
/*eslint no-caller: "error"*/
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;
});
使用此规则的正确示例:
Open in Playground
/*eslint no-caller: "error"*/
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;
});
Version
This rule was introduced in ESLint v0.0.6.