我可以重点介绍一下ESlint的让范围界定问题吗?

时间:2018-07-19 10:06:24

标签: 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却没有说什么。我可以启用一个特定的规则吗?

1 个答案:

答案 0 :(得分:2)

您可以考虑启用ESlint no-shadow,此规则旨在消除阴影变量声明,它会在第二个c声明时发出警告。

https://eslint.org/docs/rules/no-shadow