Skip to content
← Back to rules

eslint/no-labels 스타일

작동 방식

라벨이 지정된 문을 금지합니다.

왜 문제가 될까?

자바스크립트에서 라벨이 붙은 문은 breakcontinue와 함께 사용되어 여러 루프 사이의 흐름을 제어하는 데 쓰입니다. 예를 들어:

js
outer: while (true) {
  while (true) {
    break outer;
  }
}

여기서 break outer 문은 outer 라벨이 적용된 다음 문장으로 제어가 반환되도록 보장하기 때문에 무한 루프가 발생하지 않습니다. 만약 이 문장을 단순히 break로 변경하면, 컨트롤이 외부 while 문장으로 돌아가며 무한 루프가 발생하게 됩니다.

어떤 경우에서는 편리할 수 있지만, 라벨은 일반적으로 드물게 사용되며, 일부는 오류가 발생하기 쉬우며 이해하기 어려운 흐름 제어의 일종으로 부정적인 시각을 가집니다.

예시

잘못된 코드 예시:

js
label: while (true) {
  // ...
}

label: while (true) {
  break label;
}

label: while (true) {
  continue label;
}

label: switch (a) {
  case 0:
    break label;
}

label: {
  break label;
}

label: if (a) {
  break label;
}

올바른 코드 예시:

js
var f = {
  label: "foo",
};

while (true) {
  break;
}

while (true) {
  continue;
}

구성

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

allowLoop

type: boolean

기본값: false

true로 설정된 경우, 이 규칙은 반복문 문장에 붙은 라벨을 무시합니다.
이 옵션이 true로 설정된 올바른 코드 예시:

js
label: while (true) {
  break label;
}

allowSwitch

type: boolean

기본값: false

true로 설정된 경우, 이 규칙은 switch 문장에 붙은 라벨을 무시합니다.
이 옵션이 true로 설정된 올바른 코드 예시:

js
label: switch (a) {
  case 0:
    break label;
}

사용 방법

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

json
{
  "rules": {
    "no-labels": "error"
  }
}
bash
oxlint --deny no-labels

참고 자료