Why is this valid syntax?

Viewed 1204

While refactoring some code I accidentally discovered that this is valid syntax (or at least, doesn't cause a parser error in Firefox):

const {} = somefunc();

somefunc returns an object and the curly's are supposed to contain variable names for destructuring, at the time I hadn't decided what those names would be so I temporarily left them empty.

The editor didn't highlight a syntax error, so out of curiosity I tested it, and was surprised that Firefox actually had no issue with this syntax.

Why is this syntax valid? Does it actually do something weird?

3 Answers

When destructuring an object you chose which properties you need:

const {a, c} = {'c': 1, 'b': 2, 'a': 3};

Thus having no parameters is acceptable, but useless nonetheless:

const {} = {};

It's just the limiting case of object destructuring.

While it may seem pointless to allow it, allowing edge cases like this is useful for automatically generated code, so the generator doesn't have to check that there are zero items and skip generating the code.

Related