ES6模块导出默认语法

时间:2014-01-25 00:03:45

标签: javascript jshint ecmascript-harmony esprima

我正在使用带有esnext: true选项的es6-module-transpiler,esprima和JSHint。当我提出时,JSHint抱怨:

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

但是当我使用

时,esprima会抱怨
export default { some: 'thing', other: 'thing' };

spec

  

export default AssignmentExpression ;

这让我觉得JSHint需要更新,并且esprima正好被轰炸,因为没有任务。有人可以成为我的决定者吗?

1 个答案:

答案 0 :(得分:13)

实际上 AssignmentExpression 可以是任何表达式,它是最高级别的表达式,包含所有其他表达式的表达式(请参阅spec)。

然而,

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

实际上不是赋值表达式,这是一个语法错误。如果在赋值表达式中使用赋值运算符,则需要左侧和右侧。所以这样的事情是有效的:

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

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

所以Esprima似乎错了。