no-undef
禁止未声明的变量(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中引入。