首页 > 解决方案 > 我可以突出显示 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 什么也没说。我可以启用特定规则吗?

标签: javascripteslint

解决方案


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

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


推荐阅读