函数参数中未使用 'x',但需要 'x' - JSLint 错误

Unused 'x' in function arguments, but 'x' is needed - JSLint error

我正在用 JSLint 分析我的 AngularJS 代码。

很多时候,我的函数有多个参数,例如:

$rootScope.$on('$stateChangeSuccess', function (ev, toState, toParams, fromState, fromParams) {
    // code that uses toState, toParams, fromState, fromParams
    // but does touch use ev
})

很多时候我需要指定所有参数,因为我使用最后一个参数。

因此没有使用其他参数,但仍然需要。并且 JSLint 会抛出错误,例如:

Unused 'ev'.......

有办法解决吗?

好的!您可以使用 JSLint directive:

/*jslint unparam:true, sloppy:true, white:true, devel:true */
/*global $rootScope*/
$rootScope.$on('$stateChangeSuccess', function (ev, toState, toParams, fromState, fromParams) {
    // I'm putting in this line so that JSLint doesn't complain about an empty block
    // and also so that I can mimic your described situation.
    console.log(toState, toParams, fromState, fromParams);
});

在这种情况下,unparam:true 解决了这个特定问题。 (devel 允许 console 使用和一些其他对象。white 允许任何空格,并且 sloppy 允许您跳过 "use strict";。最后两个是个人喜好.)

如果您只想为这个单一功能(或您的代码的某些子集)关闭它,您可以像这样关闭和打开 unparam

/*jslint sloppy:true, white:true, devel:true */
/*global $rootScope*/

/*jslint unparam:true */
$rootScope.$on('$stateChangeSuccess', function (ev, toState, toParams, fromState, fromParams) {
    console.log(toState, toParams, fromState, fromParams);
});
/*jslint unparam:false */

unparam 对这些情况非常有用。如果没有这个选项,第三方库中像这样的事件处理函数签名将很难使用。