簡體   English   中英

類聲明ECMAScript 6后分號的ESLint錯誤

[英]ESLint error on semicolon after class declaration ECMAScript 6

我有以下代碼:

class Car() {

    constructor() {
        // ...
    }

    withSemi() {
        // ...
    };  // ESLint does not complain here

    withoutSemi() {
       // ...
    }  // ESLint does not complain here

};  // ESLint will complain about this semicolon (no-extra-semi)

有人可以解釋自動分號插入在ES6中如何在類中運行以及ESLint為什么會出現這種行為?

根據ECMAScript 2015 class規范 ,分號是有效的ClassElement ,因此它可以存在於ClassBody

但是,它的語義將其視為沒有任何行為(例如,請參閱NonConstructorMethodDefinitions )。 實際上,你可以在ClassBody中擁有你想要的ClassBody數量的分號,它不會改變任何東西。

自動分號插入實際上並沒有在這里發揮作用,或者像人們通常認為的那樣經常發生。 粗略地說,ASI只發生在解析器看到不允許成為前一個塊或行的一部分的情況時。 (如果您感興趣的話,ASI的實際規則並不長;向下滾動以獲取示例和實用建議。)但是在此上下文中,您可以按順序將一堆類方法定義放在一起。 因此,列表中的下一個方法沒有任何“意外”,因此不會在它們之間插入分號。

我不知道決定的歷史,但我認為分號是有效的ClassElement因為它們已經作為空語句有效,如果你不能將分號放在類體中,它可能會讓人感到困惑。

暫無
暫無

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

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