Skip to content
← Back to rules

eslint/no-shadow-restricted-names 정확성

This rule is turned on by default.

작동 방식

undefined, NaN, Infinity, eval, globalThis, arguments와 같은 전역 변수의 재정의를 금지합니다.

왜 문제가 되는가?

전역 객체의 값 속성인 NaN, Infinity, undefined, globalThis 및 엄격 모드에서 제한된 식별자인 eval, arguments는 자바스크립트에서 제약 이름으로 간주됩니다. 이러한 이름을 다른 의미로 정의하게 되면 예기치 않은 결과를 초래할 수 있으며, 코드를 읽는 다른 사람들을 혼란스럽게 할 수 있습니다. 예를 들어 다음과 같은 코드를 작성하는 것을 막을 수 없습니다:

javascript
var undefined = "foo";

그러면 동일한 범위 내에서 사용되는 모든 코드는 전역 undefined 대신 의미가 매우 다른 로컬 버전의 undefined를 사용하게 됩니다.

예시

이 규칙에 부적절한 코드 예시:

javascript
function NaN() {}

!function (Infinity) {};

var undefined = 5;

try {
} catch (eval) {}

const globalThis = "foo";
javascript
import NaN from "foo";

import { undefined } from "bar";

class Infinity {}

이 규칙에 적절한 코드 예시:

javascript
var Object;

function f(a, b) {}

// 예외: 변수가 값을 할당되지 않는 경우 `undefined`는 그림자화될 수 있음.
var undefined;
javascript
import { undefined as undef } from "bar";

구성

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

reportGlobalThis

type: boolean

기본값: true

true인 경우 globalThis의 그림자화도 보고합니다.

사용 방법

구성 파일 또는 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "no-shadow-restricted-names": "error"
  }
}
bash
oxlint --deny no-shadow-restricted-names

참고 자료