JavaScript 中未使用指示函数参数的标准约定

Standard conventions for indicating a function argument is unused in JavaScript

是否有任何标准方法可以在 JavaScript 中将函数参数标记为未使用,类似于在 Ruby 中使用下划线开始方法参数?

我们有一个示例可以使用,这在 jQuery 的 $.each 中很常见,您在其中编写的代码不需要索引,只需要值,在迭代回调中($.each相对于Array#forEach落后):

$.each(objectOrArrayLikeThing, function(_, value) { }
    // Use value here
});

使用 _ 是我见过的最接近标准的方法,是的,但我也看到了很多其他方法——无论如何都给它起一个反映其目的的名字(index), 称之为 unused, 等等

如果你需要忽略多个参数,你不能重复同一个标识符(它是disallowed in strict mode,这应该是每个人的默认值,也是模块和class构造中的默认值) , 所以你做了 _0_1___

使用支持解构的浏览器可以做到:

function ({}, {}, value) {
  // console.log(value)
}

这有点简洁,因为它避免了多个参数具有相同名称的问题,也不会为将方法分配给 _(lodash、下划线等)的库带来问题。

这种方法的一个问题是未使用的 undefinednull 类型的参数将抛出。

对于undefined,一种解决方案是使用默认参数:

function ({}={}, {}={}, value) {
  // console.log(value)
}

遗憾的是 null 没有如此容易应用的解决方案。

我会推荐这种语法:

function(_index, value) {...}

不要隐藏 lodash 变量并且仍然有参数的描述以防万一它会被使用。

VS Code 也正确地高亮显示了这些名称,并且这些未使用的参数不会在自动修复代码发出异味后被删除

使用 function arguments 对象怎么样?

function third() { const [,,thirdArg] = arguments;
  return thirdArg;
}
console.log(third(1,2,3));

使用destructuring assignment,可以做到:

function f(...[, , third]) {
  console.log(third);
}

f(1, 2, 3);