2014-01-25 15 views
11

Ich verwende die es6-Modul-Transpiler, esprima und JSHint mit esnext: true Optionen. JSHint beschwert, wenn ich gesagt:ES6 Modul Export Standard-Syntax

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

Aber esprima beschwert, wenn ich

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

Die spec sagt

export default AssignmentExpression ;

Was mich denken lässt, dass JSHint aktualisiert werden muss und esprima ist richtig Bombe weil es keine Aufgabe gibt. Kann jemand hier der Entscheider sein?

Antwort

13

Eigentlich ein AssignmentExpression kann jeder Ausdruck sein, es ist der Ausdruck auf der obersten Ebene, die eine, die alle anderen Ausdrücke enthält (siehe spec).

jedoch

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

ist wirklich nicht ein Zuweisungsausdruck es ein Syntaxfehler ist. Wenn Sie den Zuweisungsoperator in einem Zuweisungsausdruck verwenden, benötigen Sie eine linke und eine rechte Seite. So etwas wie dieses wäre gültig:

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

Nur ein Objektliteral verwenden, sollten korrekt sein, weil, wie gesagt, ein AssignmentExpressionsein kann jeder Ausdruck.

Also scheint Esprima falsch zu sein.

+0

Danke für die Entscheidung. Ich habe ein Problem (https://code.google.com/p/esprima/issues/detail?id=486) mit dem esprima-Projekt eingereicht, wenn Sie daran interessiert sind, zu folgen. – Jacob