Non-binding destructuring assignment

Elie Rotenberg elie at
Wed Apr 29 11:39:46 UTC 2015

Using array destructuring assignment and constraining linting rules, I
often find myself having to chose names for bindings I don't intent on
using. I usually end up using a conventional ignore name, such as _ignore,
which I "void" to shut up the linter without adding exceptions. Besides the
linting problem (which can be solved by refining the linting rules), it's
still a conceptually useless binding.

Here's a contrived example:

const lastOfThree = ([first, second, third])  => third;

Which I usually end up rewriting:

const lastOfThree = ([_ignore1, _ignore2, third]) => {
  void _ignore1;
  void _ignore2;
  return third;

This problem doesn't exist when using objects, since only the fields
specified on the LHS are bound.

I realize the bigger topic behind non-binding match is refutable pattern
matching, as per, but being
able to dismiss a matched (or unmatched) value from a destructuring
assignment seems a very often desirable feature when programming in a
functional style (eg. working with lists represented as 2-element arrays).
Most functional-style languages have a non-binding matching feature.

This topic has been discussed in the following topics:

Does anyone else feel the need for a specific means of dismissing a binding
from a destructuring assignment? Is pattern matching still on discussion?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list