首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-global-assign

"extends": "eslint:recommended"配置文件中的属性启用此规则。

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

代码语言:javascript
复制
window = {};

虽然window很明显的例子,但 JavaScript 环境经常提供数百个内置全局对象。很难知道你是否在分配一个全局变量。

规则细节

此规则不允许修改只读全局变量。

ESLint 有能力将全局变量配置为只读。

  • 指定环境
  • 指定全局

此规则的错误代码示例:

代码语言:javascript
复制
/*eslint no-global-assign: "error"*/

Object = null
undefined = 1
代码语言:javascript
复制
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/

window = {}
length = 1
top = 1
代码语言:javascript
复制
/*eslint no-global-assign: "error"*/
/*globals a:false*/

a = 1

此规则的正确代码示例:

代码语言:javascript
复制
/*eslint no-global-assign: "error"*/

a = 1
var b = 1
b = 2
代码语言:javascript
复制
/*eslint no-global-assign: "error"*/
/*eslint-env browser*/

onload = function() {}
代码语言:javascript
复制
/*eslint no-global-assign: "error"*/
/*globals a:true*/

a = 1

选项

该规则接受一个exceptions选项,该选项可用于指定允许重新分配的内建列表:

代码语言:javascript
复制
{
    "rules": {
        "no-global-assign": ["error", {"exceptions": ["Object"]}]
    }
}

何时不使用它

如果您尝试覆盖其中一个本机对象。

相关规则

  • no-extend-native
  • no-redeclare
  • no-shadow

版本

这条规则是在 ESLint 3.3.0 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券