Skip to content
← Back to rules

unicorn/consistent-function-scoping 의심스러움

An auto-fix is available for this rule.

작동 방식

외부 스코프에서 변수를 캡처하지 않는 스코프 내에 선언된 함수를 허용하지 않습니다.

왜 문제가 되는가?

함수 선언을 가능한 최상위 스코프로 이동하면 가독성이 향상되고, 직접적으로 성능 향상을 가져오며, 자바스크립트 엔진이 성능을 더 잘 최적화할 수 있도록 해줍니다.

예시

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

js
export function doFoo(foo) {
  // 외부 스코프의 변수를 캡처하지 않음 → 최상위 스코프로 이동 가능
  function doBar(bar) {
    return bar === "bar";
  }
  return doBar;
}

function doFoo(foo) {
  const doBar = (bar) => {
    return bar === "bar";
  };
}

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

js
function doBar(bar) {
  return bar === "bar";
}

export function doFoo(foo) {
  return doBar;
}

export function doFoo(foo) {
  function doBar(bar) {
    return bar === "bar" && foo.doBar(bar);
  }
  return doBar;
}

제한 사항

이 규칙은 함수 내부의 불필요한 코드 블록을 탐지하거나 제거하지 않습니다:

js
function doFoo(foo) {
  {
    function doBar(bar) {
      return bar;
    }
  }

  return foo;
}

또한 JSXElement 참조를 포함하는 함수는 무시합니다:

jsx
function doFoo(FooComponent) {
  function Bar() {
    return <FooComponent />;
  }

  return Bar;
}

즉시 실행 함수 표현식 (IIFE)은 무시됩니다:

js
(function () {
  function doFoo(bar) {
    return bar;
  }
})();

구성

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

checkArrowFunctions

type: boolean

기본값: true

화살표 함수와 함께 스코핑을 확인할지 여부.

사용 방법

이 규칙을 설정 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "unicorn/consistent-function-scoping": "error"
  }
}
bash
oxlint --deny unicorn/consistent-function-scoping

참고 자료