Standard conventions for indicating a function argument is unused in JavaScript
Just so we have an example to work from, this is fairly common with jQuery's $.each
where you're writing code that doesn't need the index, just the value, in the iteration callback ($.each
is backward relative to Array#forEach
):
$.each(objectOrArrayLikeThing, function(_, value) { }
// Use value here
});
Using _
is the closest I've seen to a standard way to do that, yes, but I've also seen lots of others — giving it a name reflective of its purpose anyway (index
), calling it unused
, etc.
If you need to ignore more than one parameter, you can't repeat the same identifier (it's disallowed in strict mode, which should be everyone's default and is the default in modules and class
constructs), so you have do things like _0
and _1
or _
and __
, etc.
Using destructuring assignment, one can do:
function f(...[, , third]) {
console.log(third);
}
f(1, 2, 3);
With browsers supporting destructuring one can do:
function ({}, {}, value) {
// console.log(value)
}
Which is kind of neat in that it avoids the problem of multiple arguments having the same name and also won't create problems with libraries that assign methods to _
(lodash, underscore, etc.).
One problem with this approach is that unused arguments of type undefined
or null
will throw.
For undefined
one solution is to use default parameters:
function ({}={}, {}={}, value) {
// console.log(value)
}
Sadly no such easily applied solution for null
.