禁止覆盖受限名称
注意:此规则是
recommended规则集的一部分。在
deno.json 中启用完整集合{
"lint": {
"rules": {
"tags": ["recommended"]
}
}
}使用 Deno CLI 启用完整集合
deno lint --rules-tags=recommended
通过将其添加到
deno.json中的include或exclude数组中,此规则可以显式地包含或排除在当前标签中存在的规则之外。{
"lint": {
"rules": {
"include": ["no-shadow-restricted-names"],
"exclude": ["no-shadow-restricted-names"]
}
}
}禁止遮蔽受限名称。
以下 (a) 全局对象的属性,或 (b) 标识符在 JavaScript 中是“受限”名称:
这些名称在 JavaScript 中不是保留字,这意味着没有任何东西能阻止将其他值赋给它们(即遮蔽)。换句话说,您可以使用,例如,undefined作为标识符或变量名。(更多详细信息请参阅MDN)
function foo() {
const undefined = "bar";
console.log(undefined); // output: "bar"
}
当然,这种遮蔽很可能会混淆其他开发者,因此应该避免。此 Lint 规则会检测并警告此类情况。
无效示例
const undefined = 42;
function NaN() {}
function foo(Infinity) {}
const arguments = () => {};
try {
} catch (eval) {}
有效示例
// If not assigned a value, `undefined` may be shadowed
const undefined;
const Object = 42;
function foo(a: number, b: string) {}
try {
} catch (e) {}