未使用的功能参数的最佳实践

时间:2014-10-15 10:46:09

标签: javascript parameters jslint

我一直想知道处理以下问题的最佳方法是什么。

someCallback: function(param1,param2,paramThatIActuallyNeed) {
     doSomethingWith(paramThatIActuallyNeed)
}

因此,在此示例中,param1param2未使用,但我需要将它们放在那里以便访问第三个参数。这让JSLint感到难过,我想知道避免这种情况的做法是什么?当使用具有许多回调结果的库时,这往往会发生。

4 个答案:

答案 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,或者是否实现了实际上没有使用未使用的变量的最终结果。