# no-redeclare

禁止变量重新声明

配置文件中的 "extends": "eslint:recommended" 属性启用了该规则

在 JavaScript 中,可以使用 var 重新声明相同的变量名。这可能会导致混淆变量的实际声明和初始化位置。

# 规则详情

此规则旨在消除在同一范围内具有多个声明的变量。

此规则的错误代码示例:

/*eslint no-redeclare: "error"*/

var a = 3;
var a = 10;

class C {
    foo() {
        var b = 3;
        var b = 10;
    }

    static {
        var c = 3;
        var c = 10;
    }
}

此规则的正确代码示例:

/*eslint no-redeclare: "error"*/

var a = 3;
a = 10;

class C {
    foo() {
        var b = 3;
        b = 10;
    }

    static {
        var c = 3;
        c = 10;
    }
}

# 选项

此规则采用一个可选参数,即具有布尔属性 "builtinGlobals" 的对象。默认为 true。如果设置为 true,此规则还会检查内置全局变量的重新声明,例如 ObjectArrayNumber...

# builtinGlobals

"builtinGlobals" 选项将检查全局范围内内置全局变量的重新声明。

{ "builtinGlobals": true } 选项的错误代码示例:

/*eslint no-redeclare: ["error", { "builtinGlobals": true }]*/

var Object = 0;

{ "builtinGlobals": true } 选项和 browser 环境的错误代码示例:

/*eslint no-redeclare: ["error", { "builtinGlobals": true }]*/
/*eslint-env browser*/

var top = 0;

browser 环境有许多内置的全局变量(例如,top)。一些内置的全局变量不能重新声明。

请注意,当使用 nodecommonjs 环境(或 ecmaFeatures.globalReturn,如果使用默认解析器)时,程序的顶级范围实际上不是全局范围,而是 "module" 范围。在这种情况下,声明一个以内置全局命名的变量不是重新声明,而是全局变量的影子。在这种情况下,应该使用带有 "builtinGlobals" 选项的 no-shadow 规则。

Last Updated: 5/13/2023, 8:55:38 PM