我一直想知道处理以下问题的最佳方法是什么。
someCallback: function(param1,param2,paramThatIActuallyNeed) {
doSomethingWith(paramThatIActuallyNeed)
}
因此,在本例中,param1
和param2
是未使用的,但我需要将它们放在那里,以便访问第三个参数。这让JSLint很难过,我想知道如何避免这种情况?当使用具有许多回调结果的库时,往往会发生这种情况。
这就是unparam
的作用:
/*jslint unparam: true */
这是我更喜欢jshint的另一个很好的理由,因为它并不愚蠢。
我肯定会建议不要仅仅为了安抚jslint而使用arguments
。
您可以使用arguments
对象,详细信息如下:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
例如:
someCallback: function() {
doSomethingWith(arguments[2]);
}
您可以始终使用一个对象来保存您的参数,那么只要您检查它们,是否缺少任何参数都无关紧要。
function doThing(args) {
var age = args.age || 12;
console.log(age);
if (args.name) { console.log(args.name); }
};
doThing({
name: 'Bob',
age: 12
occupation: 'spaceman'
});
不会安抚jslint(*),但您可以使用析构函数来完全省略未使用的参数。诚然,这是一种有点尴尬的语法,但它是一种选择:
function func(...[, , paramThatIActuallyNeed]) {
console.log(paramThatIActuallyNeed)
}
func(1, 2, 3); // Logs: 3
可能有更好的语法,但以上确实有效。
(*)jslint在析构函数参数中所允许的内容非常保守,并将在上面的代码中抛出Expected an identifier and instead saw '['.
。
不完全确定您的问题是集中在安抚您的情况下的jslint,还是实现没有实际使用的变量浮动的最终结果。