# no-shadow-restricted-names
禁止标识符遮蔽受限名称
配置文件中的 "extends": "eslint:recommended" 属性启用了该规则
ES5 §15.1.1 全局对象的值属性(NaN
、Infinity
、undefined
)以及严格模式受限标识符 eval
和 arguments
被认为是 JavaScript 中的受限名称。将它们定义为其他含义可能会产生意想不到的后果,并使其他阅读代码的人感到困惑。例如,没有什么能阻止你写:
var undefined = "foo";
那么在同一范围内使用的任何代码都不会得到全局undefined
,而是具有非常不同含义的本地版本。
# 规则详情
此规则的错误代码示例:
/*eslint no-shadow-restricted-names: "error"*/
function NaN(){}
!function(Infinity){};
var undefined = 5;
try {} catch(eval){}
此规则的正确代码示例:
/*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;
← no-shadow no-ternary →