gpt4 book ai didi

javascript - 类声明 ECMAScript 6 后分号出现 ESLint 错误

转载 作者:行者123 更新时间:2023-11-29 14:47:36 25 4
gpt4 key购买 nike

我有以下代码:

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 specification ,分号是有效的 ClassElement,因此它可以存在于 ClassBody 中。

但是,它的语义将它视为没有任何行为(例如,参见 NonConstructorMethodDefinitions )。 实际上,您可以在 ClassBody 中使用任意数量的分号,这不会改变任何事情。

自动分号插入实际上并没有在这里发挥作用,或者不像人们一般认为的那样频繁。粗略地说,ASI 仅在解析器发现某些不允许成为前一个 block 或行的一部分时才会发生。 (如果您有兴趣,ASI 的 actual rules 不是很长;向下滚动以获取示例和实用建议。)但是在这种情况下,您可以按顺序将一堆类方法定义放在一起。因此,列表中的下一个方法没有任何“意外”,因此它们之间没有插入分号。

我不知道这个决定的历史,但我假设分号是有效的 ClassElement,因为它们作为空语句已经有效,如果你 不能在类主体中放置分号。

关于javascript - 类声明 ECMAScript 6 后分号出现 ESLint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com