如何在JavaScript/TypeScript中检测具有相同索引的嵌套循环

如何在JavaScript/TypeScript中检测具有相同索引的嵌套循环,javascript,typescript,eslint,tslint,syntax-checking,Javascript,Typescript,Eslint,Tslint,Syntax Checking,我尝试检测具有相同索引的嵌套循环,如下所示: for(let i = 0; i < 10; i++) { for(let i = 0; i < 10; i++) { } } for(设i=0;i

我尝试检测具有相同索引的嵌套循环,如下所示:

for(let i = 0; i < 10; i++) {
    for(let i = 0; i < 10; i++) {
    }
}
for(设i=0;i<10;i++){
for(设i=0;i<10;i++){
}
}

我已经搜索了Eslint规则,但到目前为止还没有找到任何解决方案。有没有办法检测到这种糟糕的代码气味?非常感谢。

您不能这样做,因为它是纯逻辑的

ESLint具有标记该变量的属性,并且在其他地方,您已经使用内部范围变量来隐藏外部范围变量。例如:

{
“无阴影”:[“错误”,{“builtinGlobals”:false,“提升”:“函数”,“允许”:[]}]
}
:

for(设i=0;i<10;i++){
for(设i=0;i<10;i++){
//          ^−−−−− 'i'已在第1行第9列的上部范围中声明。
控制台日志(i);
}
}

我忍不住要幽默地指出,在这种情况下,这无关紧要,因为内部循环体永远不会运行。;-)(
i=0;i<0
…);-)为什么嵌套循环被认为是“糟糕的代码气味”?还是说循环共享变量?@evolutionxbox-不是嵌套循环本身,而是具有相同索引变量的嵌套循环。内在的将遮蔽外在的。我可以看到这样的论点,即这是自找麻烦。:-)这有一个lint规则,我想它会检测到这一点case@T.J.Crowder正是你对阴影的使用让我想起了它的存在,谢谢你。