2014-01-25 128 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