Eslint参考手册
规则 | Rules
no-undef
"extends": "eslint:recommended"
配置文件中的属性启用此规则。
此规则可以帮助您查找由变量和参数名称拼写错误或意外隐式全局变量(例如,var
在for
循环初始值设定项中遗忘关键字)导致的潜在ReferenceErrors 。
规则细节
任何对未声明的变量的引用都会导致警告,除非该变量在/*global ...*/
注释中明确提到。
此规则的错误代码示例:
/*eslint no-undef: "error"*/
var a = someFunction();
b = 10;
具有声明的此规则的正确代码示例global
:
/*global someFunction b:true*/
/*eslint no-undef: "error"*/
var a = someFunction();
b = 10;
其中的b:true
语法/*global */
表示赋值b
为正确。
具有global
声明的此规则的不正确代码示例:
/*global b*/
/*eslint no-undef: "error"*/
b = 10;
默认情况下,声明的变量/*global */
是只读的,因此赋值不正确。
选项
-
typeof
设置为true会警告typeof检查中使用的变量(默认为false)。
类型
默认{ "typeof": false }
选项的正确代码示例:
/*eslint no-undef: "error"*/
if (typeof UndefinedIdentifier === "undefined") {
// do something ...
}
如果要防止typeof
检查尚未声明的变量,则可以使用此选项。
{ "typeof": true }
选项的错误代码示例:
/*eslint no-undef: ["error", { "typeof": true }] */
if(typeof a === "string"){}
具有全局声明的{“typeof”:true}选项的正确代码示例:
/*global a*/
/*eslint no-undef: ["error", { "typeof": true }] */
if(typeof a === "string"){}
环境
为了方便起见,ESLint提供了快捷方式,用于预先定义常用库和运行时环境公开的全局变量。此规则支持这些环境,如指定环境中所列。下面给出几个例子。
浏览器
browser
规则与环境的正确代码示例:
/*eslint no-undef: "error"*/
/*eslint-env browser*/
setTimeout(function() {
alert("Hello");
});
Node.js
此规则与node
环境的正确代码示例:
/*eslint no-undef: "error"*/
/*eslint-env node*/
var fs = require("fs");
module.exports = function() {
console.log(fs);
};
何时不使用它?
如果显式声明全局变量不符合你的要求。
兼容性
这条规则提供了处理全局变量的兼容性JSHint和JSLint的。
版本
该规则在ESLint 0.0.9中引入。
资源
- 规则来源
- 文档来源
规则 | Rules相关

ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。
主页 | https://eslint.org/ |
源码 | https://github.com/eslint/eslint |
发布版本 | 4.12.0 |