Versions

no-shadow-restricted-names

Disallow identifiers from shadowing restricted names

Recommended

The "extends": "eslint:recommended" property in a configuration file enables this rule

ES5 §15.1.1 全局对象的值属性(NaNInfinityundefined)以及严格模式的限制性标识符 evalarguments 被认为是 JavaScript 中的限制性名称。将它们定义为其他含义可能会产生意想不到的后果,并使其他人在阅读代码时感到困惑。例如,没有什么可以阻止你写:

var undefined = "foo";

那么在同一范围内使用的任何代码都不会得到全局的 undefined,而是具有非常不同含义的本地版本。

规则细节

使用此规则的错误示例:

Open in Playground
/*eslint no-shadow-restricted-names: "error"*/

function NaN(){}

!function(Infinity){};

var undefined = 5;

try {} catch(eval){}

使用此规则的正确示例:

Open in Playground
/*eslint no-shadow-restricted-names: "error"*/

var Object;

function f(a, b){}

// Exception: `undefined` may be shadowed if the variable is never assigned a value.
var undefined;

Version

This rule was introduced in ESLint v0.1.4.

Further Reading

Resources

更改语言