Eslint
规则 | Rules

no-implicit-globals

function在全局范围中禁止变量和声明( no-implicit-globals )

当使用浏览器脚本时,开发人员经常会忘记顶级作用域的变量和函数声明成为window对象上的全局变量。与具有自己范围的模块相反。全局应明确分配给window或者self如果这是意图。否则,想要脚本本地的变量应该包含在 IIFE 中。

规则细节

此规则不允许在顶级脚本作用域中声明var并命名function声明。这不适用于 ES 和 CommonJS 模块,因为它们具有模块范围。

此规则的错误代码示例:

/*eslint no-implicit-globals: "error"*/ var foo = 1; function bar() {}

此规则的正确代码示例:

/*eslint no-implicit-globals: "error"*/ // explicitly set on window window.foo = 1; window.bar = function() {}; // intended to be scope to this file (function() { var foo = 1; function bar() {} })(

在 ESLint 配置中使用此规则的正确代码示例"parserOptions": { "sourceType": "module" }

/*eslint no-implicit-globals: "error"*/ // foo and bar are local to module var foo = 1; function bar() {}

何时不使用它

如果您希望能够在全局范围内声明变量和函数,则可以安全地禁用此规则。或者,如果您始终使用模块范围的文件,则此规则将永远不适用。

进一步阅读