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

фактически ВыражениеПрисваивания может быть любое выражение, это выражение на самом верхнем уровне, тот, который содержит все другие выражения (см spec).

Однако

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

действительно не является выражением присваивания, это ошибка синтаксиса. Если вы используете оператор присваивания в выражении присваивания, вам нужна левая сторона и правая сторона. Так что-то подобное было бы справедливо:

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

Только с помощью литерала объекта должно быть правильным, потому что, как я уже сказал, ВыражениеПрисваивания может быть любое выражение.

Так что Esprima кажется неправильным.

+0

Спасибо за решение. Я [зарегистрировал проблему] (https://code.google.com/p/esprima/issues/detail?id=486) с проектом esprima, если вы заинтересованы в следующем. – Jacob

Смежные вопросы