Skip to content
← Back to rules

eslint/no-inner-declarations Pedantic

무엇을 하는가

중첩된 블록 내에서 변수 또는 함수 선언을 금지합니다.

왜 좋지 않은가?

문장이 올 수 있는 곳이라면 어디서든 변수 선언이 허용되며, 이는 다른 블록 내부에 깊이 중첩되어 있을 수도 있습니다.
이는 변수 호이스팅 때문에 종종 바람직하지 않으며, 선언을 프로그램이나 함수 본문의 최상위로 이동하면 가독성이 높아집니다.
참고로, 블록 스코프 바인딩(예: let, const)은 호이스팅되지 않기 때문에 이 규칙의 영향을 받지 않습니다.

예시

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

javascript
if (test) {
  function doSomethingElse() {}
}

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

javascript
function doSomethingElse() {}
if (test) {
  // 여기에 코드 작성
}

구성

첫 번째 옵션

타입: "functions" | "both"

확인할 선언 유형을 지정합니다.

"functions"

중첩된 블록 내에서 함수 선언을 금지합니다.

"both"

중첩된 블록 내에서 함수 및 var 선언을 모두 금지합니다.

두 번째 옵션

이 옵션은 다음 속성을 가진 객체입니다:

blockScopedFunctions

타입: "allow" | "disallow"

"allow"

엄격 모드(ES6+ 동작)에서 중첩 블록 내 함수 선언을 허용합니다.

"disallow"

엄격 모드 여부와 무관하게 중첩 블록 내 함수 선언을 금지합니다.

사용 방법

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

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

참고자료