命名导出函数声明后是否需要分号?

sfl*_*che 4 javascript ecmascript-6 es6-modules

首先,这不是关于ASI的问题.我不是在问这里是否适用自动分号插入(好吧,我有点儿,但是这个开场陈述是为了避免在我是否应该使用分号之间存在争议,因为asi会照顾它我...)

我知道在函数声明后不要加分号...

function foo() { 
  // do stuff
} // no semicolon
Run Code Online (Sandbox Code Playgroud)

但在export函数声明后我需要一个分号吗?

export function foo() {
  // do stuff
} // semicolon or not to semicolon?
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,我也想知道为什么.

lon*_*day 5

不,你不需要分号,虽然添加一个也不会有任何伤害.

如果我们查看ES6规范,您将看到此签名被视为声明,并且与正常的函数声明一样,在它之后不需要分号:

export Declaration

在该文档中注明了需要由分号(无论是明确的还是隐式的)所遵循的语句.例如:

export * FromClause ;

这;是强制性的.在声明中,它不是.当然,插入分号不会造成任何伤害; JS解释器会将其视为空语句.