no-global-assign
Disallow assignments to native objects or read-only global variables
✅ Recommended
The "extends": "eslint:recommended"
property in a configuration file enables this rule
JavaScript 环境包含一些内置的全局变量,例如浏览器中的 window
和 Node.js 中的 process
。几乎在所有情况下,你都不想给这些全局变量赋值,因为这样做可能会导致失去对重要功能的访问。例如,你可能不希望在浏览器代码中这样做。
window = {};
虽然像 window
这样的例子是显而易见的,但通常有数百个由 JavaScript 环境提供的内置全局对象。要知道你是否在向一个全局变量赋值是很难的。
规则细节
这条规则不允许修改只读的全局变量。
ESLint 有能力将全局变量配置为只读。
使用此规则的错误示例:
Open in Playground
/*eslint no-global-assign: "error"*/
Object = null
undefined = 1
Open in Playground
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/
window = {}
length = 1
top = 1
Open in Playground
/*eslint no-global-assign: "error"*/
/*global a:readonly*/
a = 1
使用此规则的正确示例:
Open in Playground
/*eslint no-global-assign: "error"*/
a = 1
var b = 1
b = 2
Open in Playground
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/
onload = function() {}
Open in Playground
/*eslint no-global-assign: "error"*/
/*global a:writable*/
a = 1
选项
这条规则接受一个 exceptions
选项,可以用来指定一个允许重新分配的内置程序的列表。
{
"rules": {
"no-global-assign": ["error", {"exceptions": ["Object"]}]
}
}
何时不用
如果你试图覆盖其中一个本地对象。
Related Rules
Version
This rule was introduced in ESLint v3.3.0.