11

我正在使用带有esnext: true选项的 es6-module-transpiler、esprima 和 JSHint。JSHint 在我输入时抱怨:

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

但是当我使用 esprima 时会抱怨

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

规范说_

export default AssignmentExpression ;

这让我认为 JSHint 需要更新,而 esprima 正在正常轰炸,因为没有分配。有人可以在这里为我做决定吗?

4

1 回答 1

13

实际上,AssignmentExpression可以是任何表达式,它是最顶层的表达式,包含所有其他表达式(参见规范)。

然而,

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

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

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

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

因此,Esprima 似乎是错误的。

于 2014-01-25T02:17:30.070 回答