11

I'm using the es6-module-transpiler, esprima and JSHint with esnext: true options. JSHint complains when I put:

export default = { some: 'thing', other: 'thing' };

But esprima complains when I use

export default { some: 'thing', other: 'thing' };

The spec says

export default AssignmentExpression ;

Which makes me think that JSHint needs updating and esprima is properly bombing out because there isn't an assignment. Can someone be the deciderer for me here?

0

1 Answer 1

13

Actually an AssignmentExpression can be any expression, it's the expression at the top most level, the one that contains all other expressions (see the spec).

However,

export default = { some: 'thing', other: 'thing' };

really isn't an assignment expression it's a syntax error. If you use the assignment operator in an assignment expression, then you need a left hand side and a right hand side. So something like this would be valid:

export default foo = { some: 'thing', other: 'thing' };

Just using an object literal should be correct, because, as I said, an AssignmentExpression can be any expression.

So Esprima seems to be wrong.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for the decidering. I have filed an issue with the esprima project if you are interested in following.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.