我的 JS 代码带有一些无限循环(我们使用节点纤维来允许事情发生)。
ESLint 讨厌:
while (true) {
}
因为条件不变。
以下行为是允许的:
for(;;) {
}
除了喂养 lintbeast 之外,是否还有任何客观理由支持
for
而不是 while
(反之亦然)?
注意:这个问题明确要求客观原因,因此不仅仅是基于意见。
这些关于无限循环的规则来自于生成器出现之前,甚至不知道纤维。
假设每个函数都不会挂起并返回(如生成器、
async
-关键字函数或纤程),该规则对于警告循环中的常量非常有意义。
现在时代已经变了 - 规则不再有意义,而你所做的却完全没问题。
如果我们检查 eslint 存储库,它会被讨论并同时被认为“不够重要,无法承认”:
我认为这作为内置异常没有意义。如果您这样做,那么最好使用注释手动禁用生成器中的规则。
建议了解决方法
for(;;)
,但每个参与人员都明白这是针对这种特殊情况的黑客攻击。
禁用该规则。
no-constant-condition
规则确实允许您通过配置while (true)
来忽略checkLoops: "allExceptWhileTrue"
循环。
将此配置添加到您的
.estlintrc
JSON 文件或等效文件中:
{
"rules": {
"no-constant-condition": ["error", { "checkLoops": "allExceptWhileTrue" }]
}
}
或者,您可以在 JavaScript 文件本身中添加注释:
/*eslint no-constant-condition: ["error", { "checkLoops": "allExceptWhileTrue" }]*/
while (true) {
doSomething();
};