no-caller

禁止使用 arguments.callerarguments.callee

arguments.callerarguments.callee 的使用使得一些代码优化变得不可能。它们在 JavaScript 的未来版本中已被弃用,并且在 ECMAScript 5 中在严格模式下禁止使用它们。

¥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.

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

规则详情

¥Rule Details

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

此规则的错误代码示例:

¥Examples of incorrect code for this rule:

在线运行
/*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;
});

此规则的正确代码示例:

¥Examples of correct code for this rule:

在线运行
/*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 中引入。

资源

ESLint 中文网
粤ICP备13048890号