Reputation: 3639
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?
Upvotes: 11
Views: 9702
Reputation: 816522
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.
Upvotes: 13