javascript - 我可以突出显示 ESlint 的范围问题吗?
问题描述
我经历了一个庞大的、草率编写的代码库,然后盲目地做了一个s/var/let/g
. 有几次,我能够发现变量的“重新定义”,现在用 声明let
,但它们并没有造成特别的麻烦。
在一种情况下,我有这样的事情:
let c = '';
if (d.colour) {
c = d.colour;
} else {
let rand = Math.floor((Math.random() * 5) + 1);
let c = 'hex-' + d.subject + rand;
// ...
}
$(this).attr('class', c);
第 7 行是有问题的位。一旦我删除它let
,该值就被正确分配,一切都恢复正常。
在我看来,这听起来像是静态分析器应该能够捕捉到的东西,但 ESlint 什么也没说。我可以启用特定规则吗?
解决方案
您可以考虑启用 ESlint no-shadow
,此规则旨在消除阴影变量声明,它会在第二个c
声明时警告您。