JSLint 意外的“参数”

Nov*_*ova 1 javascript arguments jslint node.js

是否有可以声明忽略警告的 JSLint 注释?另外,为什么它会警告错误?我记得在某个地方读过它们不是真正的数组,因此编码人员必须获取参数长度并出于某种原因通过 for 循环将值传递到数组中。

这是我使用张贴在这里的参数的一种方式。我也将它console.log用于周边通过测试。

Jac*_*uen 5

我不知道是否可以忽略警告,也不知道为什么 Crockford 不喜欢 arguments 对象,所以这不是一个很好的答案。

这是我所知道的:ES6 提供了rest 参数,它为我们提供了一种更简洁的方式来获得与参数对象几乎相同的功能(有一些差异)。此外,JSLint 不会给你任何警告(除非你没有假设 ES6)。

例如,如果您想编写一个 sum 函数,使用参数对象,您的代码可能如下所示:

function sum() {
    const args = Array.prototype.slice.call(arguments, 0);
    return args.reduce(function (a, b) {
        return a + b;
    });
}
Run Code Online (Sandbox Code Playgroud)

使用 rest 参数,您可以像这样编写 sum 函数:

function sum(...args) {
    return args.reduce(function (a, b) {
        return a + b;
    });
}
Run Code Online (Sandbox Code Playgroud)