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?

有帮助吗?

解决方案

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top