Versions

no-caller

Disallow the use of arguments.caller or arguments.callee

使用 arguments.callerarguments.callee 会使一些代码无法优化。在未来的 JavaScript 版本中,它们已经被废弃,在 ECMAScript 5 中,可以使用严格模式下禁用它们。

function foo() {
    var callee = arguments.callee;
}

规则细节

本规则旨在通过禁止使用 arguments.callerarguments.callee 来阻止使用废弃的和次优的代码。因此,当使用 arguments.callerarguments.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.

Resources

更改语言