2014-01-25 97 views
11

我正在使用es6-module-transpiler,esprima和JSHint以及esnext: true选项。 JSHint抱怨,当我把:ES6模块导出默认语法

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

但esprima抱怨,当我使用

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

spec

export default AssignmentExpression ;

这让我觉得,JSHint需要更新而esprima恰当地是炸弹因为没有任务。有人能成为我的决定者吗?

回答

13

其实AssignmentExpression可以是任何表达式,它是最顶层的表达式,包含所有其他表达式的表达式(请参阅spec)。

然而,

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

真的不是一个赋值表达式是一个语法错误。如果在赋值表达式中使用赋值运算符,则需要左手侧和右手侧。因此,像这样将是有效的:

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

只是使用对象文本应该是正确的,因为,正如我所说,一个AssignmentExpression可以任何表达。

所以Esprima似乎是错的。

+0

感谢您的决定。如果您有兴趣关注,我已向esprima项目[提出问题](https://code.google.com/p/esprima/issues/detail?id=486)。 – Jacob