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

no-undef

"extends": "eslint:recommended"配置文件中的属性启用此规则。

此规则可以帮助您查找由变量和参数名称拼写错误或意外隐式全局变量(例如,varfor循环初始值设定项中遗忘关键字)导致的潜在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);
};

何时不使用它?

如果显式声明全局变量不符合你的要求。

兼容性

这条规则提供了处理全局变量的兼容性JSHintJSLint的

版本

该规则在ESLint 0.0.9中引入。

资源

扫码关注腾讯云开发者

领取腾讯云代金券