no-caller
禁止使用 `arguments.caller` 或 `arguments.callee`
使用 `arguments.caller` 和 `arguments.callee` 会导致一些代码优化无法进行。它们已在 JavaScript 的未来版本中弃用,并且在严格模式下,ECMAScript 5 禁止使用它们。
function foo() {
var callee = arguments.callee;
}
规则详情
此规则旨在通过禁止使用 `arguments.caller` 和 `arguments.callee` 来避免使用已弃用和次优的代码。因此,当使用 `arguments.caller` 和 `arguments.callee` 时,它会发出警告。
此规则的**错误**代码示例
在 Playground 中打开
/*eslint no-caller: "error"*/
function foo(n) {
if (n <= 0) {
return;
}
(n - 1);
}
[1,2,3,4,5].map(function(n) {
return !(n > 1) ? 1 : (n - 1) * n;
});
此规则的**正确**代码示例
在 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;
});
版本
此规则在 ESLint v0.0.6 中引入。