簡體   English   中英

命名導出函數聲明后是否需要分號?

[英]Do I need a semicolon after a named export function declaration

首先,這不是關於ASI的問題。 我不是在問這里是否適用自動分號插入(好吧,我有點喜歡,但是這個開場陳述是為了避免我是否應該使用分號之間的爭論,因為asi會照顧它我...)

我知道在函數聲明后不要加分號...

function foo() { 
  // do stuff
} // no semicolon

但是在export函數聲明后我需要一個分號嗎?

export function foo() {
  // do stuff
} // semicolon or not to semicolon?

在任何一種情況下,我也想知道為什么。

不,你不需要分號,雖然添加一個也不會有任何傷害。

如果我們查看ES6規范 ,您將看到此簽名被視為聲明,並且與正常的函數聲明一樣,在它之后不需要分號:

export Declaration

在該文檔中注明了需要由分號(無論是明確的還是隱式的)所遵循的語句。 例如:

export * FromClause ;

那里; 是強制性的。 在聲明中,它不是。 當然,插入分號不會造成任何傷害; JS解釋器會將其視為空語句。

不,你這里不需要分號。 MDN查看此示例:

 export default function() {} // or 'export default class {}' // there is no semi-colon here 

另請參閱ECMAScript規范

句法

 ExportDeclaration : export * FromClause ; export ExportClause[~Local] FromClause ; export ExportClause[+Local] ; export VariableStatement[~Yield, ~Await] export Declaration[~Yield, ~Await] export defaultHoistableDeclaration[~Yield, ~Await, +Default] export defaultClassDeclaration[~Yield, ~Await, +Default] export default[lookahead ∉ { function, async [no LineTerminator here] function, class }]AssignmentExpression[+In, ~Yield, ~Await] ; 

如你所見, Declaration后沒有分號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM