eslint/no-shadow-restricted-names 정확성
작동 방식
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