no-global-assign
禁止对原生对象或只读全局变量进行赋值
✅ 推荐
在 配置文件 中使用来自 @eslint/js
的 recommended
配置启用此规则
JavaScript 环境包含许多内置的全局变量,例如浏览器中的 window
和 Node.js 中的 process
。在几乎所有情况下,您都不希望将值赋给这些全局变量,因为这样做会导致丢失对重要功能的访问权限。例如,您可能不希望在浏览器代码中执行此操作
window = {};
虽然像 window
这样的示例很明显,但 JavaScript 环境通常提供了数百个内置的全局对象。很难知道您是否正在向全局变量赋值。
规则详情
此规则禁止修改只读全局变量。
ESLint 能够将全局变量配置为只读。
此规则的**错误**代码示例
在游乐场中打开
/*eslint no-global-assign: "error"*/
= null
= 1
在游乐场中打开
/*eslint no-global-assign: "error"*/
/*global window:readonly*/
= {}
此规则的**正确**代码示例
在游乐场中打开
/*eslint no-global-assign: "error"*/
a = 1
var b = 1
b = 2
在游乐场中打开
/*eslint no-global-assign: "error"*/
/*global onload:writable*/
onload = function() {}
选项
此规则接受一个 exceptions
选项,它可以用于指定允许重新分配的一系列内置项
{
"rules": {
"no-global-assign": ["error", {"exceptions": ["Object"]}]
}
}
何时不使用它
如果您试图覆盖其中一个原生对象。
相关规则
版本
此规则是在 ESLint v3.3.0 中引入的。