eslint/no-labels 스타일
작동 방식
라벨이 지정된 문을 금지합니다.
왜 문제가 될까?
자바스크립트에서 라벨이 붙은 문은 break와 continue와 함께 사용되어 여러 루프 사이의 흐름을 제어하는 데 쓰입니다. 예를 들어:
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