未使用的函数参数的最佳实践

Best practice for unused function parameters

本文关键字:最佳 参数 函数 未使用      更新时间:2023-09-26

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

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

因此,在本例中,param1param2是未使用的,但我需要将它们放在那里,以便访问第三个参数。这让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,还是实现没有实际使用的变量浮动的最终结果。