我一直想知道处理以下问题的最佳方法是什么。
someCallback: function(param1,param2,paramThatIActuallyNeed) {
doSomethingWith(paramThatIActuallyNeed)
}
因此,在此示例中,param1
和param2
未使用,但我需要将它们放在那里以便访问第三个参数。这让JSLint感到难过,我想知道避免这种情况的做法是什么?当使用具有许多回调结果的库时,这往往会发生。
答案 0 :(得分:2)
这就是unparam
的用途:
/*jslint unparam: true */
这是另一个更喜欢jshint的好理由,而jshint没有参与这种愚蠢。
我肯定会建议不要只使用arguments
来安抚jslint。
答案 1 :(得分:1)
您可以使用arguments
对象,详见此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
例如:
someCallback: function() {
doSomethingWith(arguments[2]);
}
答案 2 :(得分:0)
您总是可以使用一个对象来保存您的参数,只要您检查它们就不会有任何问题。
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'
});
答案 3 :(得分:0)
不能安抚jslint(*),但您可以利用解构来完全省略未使用的参数。虽然它有点笨拙的语法,但它是一个选项:
function func(...[, , paramThatIActuallyNeed]) {
console.log(paramThatIActuallyNeed)
}
func(1, 2, 3); // Logs: 3
可能有更好的语法,但上面的确有效。
(*)jslint在解构参数时允许非常保守,并且会在上面的代码中抛出Expected an identifier and instead saw '['.
。
我们是否完全确定您的问题是否专注于在您的情况下安抚jslint,或者是否实现了实际上没有使用未使用的变量的最终结果。