这条规则可以帮助你定位潜在的 ReferenceErrors,它是由变量和参数名称的拼写错误或意外的隐含 globals(例如,由于忘记了
for
循环初始化器中的
var
关键字)导致的。
任何对未声明变量的引用都会导致警告,除非该变量在
/*global ...*/
注释中明确提及,或者在配置文件中的
globals
key in the configuration file
。一个常见的使用情况是,如果你故意使用在其他地方定义的 globals(例如,在一个源自 HTML 的脚本中)。
使用此规则的
错误
示例:
Open in Playground
var foo = someFunction();
var bar = a + 1;
1
2
3
4
使用此规则与
global
声明的
正确
示例:
Open in Playground
var foo = someFunction();
var bar = a + 1;
1
2
3
4
5
注意,这条规则不允许对只读的全局变量进行赋值。
如果你也想禁止这些赋值,请参见
no-global-assign
。
这条规则也不允许对全局变量进行重新声明。
如果你也想禁止这些重新声明,请参见
no-redeclare
。
typeof
设置为 true 将对 typeof 检查中使用的变量发出警告(默认为 false)。
typeof
使用默认的
{ "typeof": false }
选项的
正确
示例:
Open in Playground
if (typeof UndefinedIdentifier === "undefined") {
1
2
3
4
5
如果你想防止对未声明的变量进行
typeof
检查,可以使用这个选项。
使用
{ "typeof": true }
选项的
错误
示例:
Open in Playground
if(typeof a === "string"){}
1
2
3
使用
{ "typeof": true }
选项及
global
声明的
正确
示例:
Open in Playground
if(typeof a === "string"){}
1
2
3
4
Environments
为了方便起见,ESLint 提供了快捷方式,预先定义了由流行的库和运行时环境暴露的全局变量。本规则支持这些环境,如
指定环境
中所列。下面给出了几个例子:
browser
在
browser
环境下,使用此规则的
正确
的示例:
Open in Playground
setTimeout(function() {
alert("Hello");
});
1
2
3
4
5
6
Node.js
在
node
环境下,使用此规则的
正确
示例:
Open in Playground
var fs = require("fs");
module.exports = function() {
console.log(fs);
1
2
3
4
5
6
7
何时不用
如果全局变量的明确声明不符合你的喜好。
这条规则与
JSHint
和
JSLint
中对全局变量的处理兼容。
Handled by TypeScript
It is safe to disable this rule when using TypeScript because TypeScript's compiler enforces this check.