eslint/no-shadow-restricted-names Correctness β
What it does β
Disallows the redefining of global variables such as undefined
, NaN
, Infinity
, eval
and arguments
.
Why is this bad? β
Value properties of the Global Object NaN
, Infinity
, undefined
as well as the strict mode restricted identifiers eval
and arguments
are considered to be restricted names in JavaScript. Defining them to mean something else can have unintended consequences and confuse others reading the code. For example, thereβs nothing preventing you from writing:
javascript
var undefined = "foo";
Then any code used within the same scope would not get the global undefined, but rather the local version with a very different meaning.
Examples β
Examples of incorrect code for this rule:
javascript
function NaN() {}
!function (Infinity) {};
var undefined = 5;
try {
} catch (eval) {}
javascript
import NaN from "foo";
import { undefined } from "bar";
class Infinity {}
Examples of correct code for this rule:
javascript
var Object;
function f(a, b) {}
// Exception: `undefined` may be shadowed if the variable is never assigned a value.
var undefined;
javascript
import { undefined as undef } from "bar";
How to use β
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny no-shadow-restricted-names
json
{
"rules": {
"no-shadow-restricted-names": "error"
}
}