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

no-implicit-globals

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

规则细节

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

此规则的错误代码示例:

代码语言:javascript
复制
/*eslint no-implicit-globals: "error"*/

var foo = 1;

function bar() {}

此规则的正确代码示例:

代码语言:javascript
复制
/*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" }

代码语言:javascript
复制
/*eslint no-implicit-globals: "error"*/

// foo and bar are local to module
var foo = 1;
function bar() {}

何时不使用它

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

进一步阅读

扫码关注腾讯云开发者

领取腾讯云代金券