禁止覆盖受限名称
注意:此规则是
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) {}