no-global-assign
禁止赋值给原生对象或只读全局变量
✅ 推荐
在配置文件中使用来自 @eslint/js
的 recommended
配置启用此规则
JavaScript 环境包含许多内置的全局变量,例如浏览器中的 window
和 Node.js 中的 process
。在几乎所有情况下,您都不希望为这些全局变量赋值,因为这样做可能会导致失去对重要功能的访问。例如,您可能不希望在浏览器代码中执行此操作
window = {};
虽然像 window
这样的例子很明显,但 JavaScript 环境通常提供数百个内置全局对象。可能很难知道您是否正在赋值给全局变量。
规则详情
此规则禁止修改只读全局变量。
ESLint 具有将全局变量配置为只读的功能。
另请参阅:指定全局变量
此规则的错误代码示例
在 Playground 中打开
/*eslint no-global-assign: "error"*/
= null
= 1
在 Playground 中打开
/*eslint no-global-assign: "error"*/
/*global window:readonly*/
= {}
此规则的正确代码示例
在 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 中引入。