版本

no-global-assign

禁止赋值给原生对象或只读全局变量

推荐

配置文件中使用来自 @eslint/jsrecommended 配置启用此规则

JavaScript 环境包含许多内置的全局变量,例如浏览器中的 window 和 Node.js 中的 process。在几乎所有情况下,您都不希望为这些全局变量赋值,因为这样做可能会导致失去对重要功能的访问。例如,您可能不希望在浏览器代码中执行此操作

window = {};

虽然像 window 这样的例子很明显,但 JavaScript 环境通常提供数百个内置全局对象。可能很难知道您是否正在赋值给全局变量。

规则详情

此规则禁止修改只读全局变量。

ESLint 具有将全局变量配置为只读的功能。

另请参阅:指定全局变量

此规则的错误代码示例

在 Playground 中打开
/*eslint no-global-assign: "error"*/

Object = null
undefined = 1
在 Playground 中打开
/*eslint no-global-assign: "error"*/
/*global window:readonly*/

window = {}

此规则的正确代码示例

在 Playground 中打开
/*eslint no-global-assign: "error"*/

a = 1
var b = 1
b = 2
在 Playground 中打开
/*eslint no-global-assign: "error"*/
/*global onload:writable*/

onload = function() {}

选项

此规则接受一个 exceptions 选项,可用于指定允许重新赋值的内置函数列表

{
    "rules": {
        "no-global-assign": ["error", {"exceptions": ["Object"]}]
    }
}

何时不使用它

如果您尝试覆盖其中一个原生对象。

版本

此规则在 ESLint v3.3.0 中引入。

资源

更改语言