我经历了一个巨大的,草率编写的代码库,并且盲目地做了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却没有说什么。我可以启用一个特定的规则吗?
答案 0 :(得分:2)
您可以考虑启用ESlint no-shadow
,此规则旨在消除阴影变量声明,它会在第二个c
声明时发出警告。