# no-undefined

禁止使用 undefined 作为标识符

JavaScript 中的 undefined 变量实际上是全局对象的一个​​属性。因此,在 ECMAScript 3 中,可以覆盖 undefined 的值。虽然 ECMAScript 5 不允许覆盖 undefined,但仍然可以覆盖 undefined,例如:

function doSomething(data) {
    var undefined = "hi";

    // doesn't do what you think it does
    if (data === undefined) {
        // ...
    }

}

因为 undefined 可以被覆盖或隐藏,读取 undefined 可能会给出一个意想不到的值。(null 不是这种情况,它是一个总是产生相同值的关键字。)为了防止这种情况,您可以避免所有使用 undefined,这是一些样式指南推荐的内容,也是该规则强制执行的内容。这些风格指南还建议:

  • 应该是 undefined 的变量只是未初始化。(所有未初始化的变量在 JavaScript 中自动获取 undefined 的值。)
  • 检查值是否为 undefined 应使用 typeof 完成。
  • 如有必要,使用 void 运算符生成 undefined 的值。

作为替代方案,您可以使用 no-global-assignno-shadow-restricted-names 规则来防止 undefined 被遮蔽或分配不同的值。这确保了 undefined 将始终保持其原始预期值。

# 规则详情

此规则旨在消除对 undefined 的使用,因此,每当使用它时都会生成警告。

此规则的错误代码示例:

/*eslint no-undefined: "error"*/

var foo = undefined;

var undefined = "foo";

if (foo === undefined) {
    // ...
}

function foo(undefined) {
    // ...
}

此规则的正确代码示例:

/*eslint no-undefined: "error"*/

var foo = void 0;

var Undefined = "foo";

if (typeof foo === "undefined") {
    // ...
}

global.undefined = "foo";

# 何时不使用

如果您想允许在您的代码中使用 undefined,那么您可以安全地关闭此规则。

Last Updated: 5/13/2023, 8:55:38 PM