# no-global-assign
不允许分配给原生对象或只读全局变量
配置文件中的 "extends": "eslint:recommended" 属性启用了该规则
JavaScript 环境包含许多内置的全局变量,例如浏览器中的 window
和 Node.js 中的 process
。在几乎所有情况下,您都不想为这些全局变量赋值,因为这样做可能会导致失去对重要功能的访问权限。例如,您可能不想在浏览器代码中执行此操作:
window = {};
虽然 window
之类的示例很明显,但 JavaScript 环境通常会提供数百个内置的全局对象。很难知道您是否分配给全局变量。
# 规则详情
此规则不允许修改只读全局变量。
ESLint 能够将全局变量配置为只读。
指定环境
指定全局变量
此规则的错误代码示例:
/*eslint no-global-assign: "error"*/
Object = null
undefined = 1
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/
window = {}
length = 1
top = 1
/*eslint no-global-assign: "error"*/
/*global a:readonly*/
a = 1
此规则的正确代码示例:
/*eslint no-global-assign: "error"*/
a = 1
var b = 1
b = 2
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/
onload = function() {}
/*eslint no-global-assign: "error"*/
/*global a:writable*/
a = 1
# 选项
此规则接受 exceptions
选项,可用于指定允许重新分配的内置列表:
{
"rules": {
"no-global-assign": ["error", {"exceptions": ["Object"]}]
}
}
# 何时不使用
如果您试图覆盖原生对象之一。