Skip to content
← Back to rules

eslint/no-caller 정확성

This rule is turned on by default.

작동 방식

arguments.caller 또는 arguments.callee의 사용을 금지합니다.

왜 좋지 않은가?

arguments.callerarguments.callee의 사용은 여러 코드 최적화를 불가능하게 만듭니다. 이들은 자바스크립트에서 비공식적으로 폐기되었으며, 엄격 모드에서는 사용이 금지되어 있습니다.

js
function foo() {
  var callee = arguments.callee;
}

이 규칙은 arguments.callerarguments.callee의 사용을 금지함으로써 폐기된 및 비효율적인 코드 사용을 저지하고자 합니다. 따라서 arguments.callerarguments.callee가 사용될 경우 경고를 표시합니다.

자세한 정보는 MDN 문서를 참조하세요.

예시

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

js
function foo(n) {
  if (n <= 0) {
    return;
  }

  arguments.callee(n - 1);
}

[1, 2, 3, 4, 5].map(function (n) {
  return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});

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

js
function foo(n) {
  if (n <= 0) {
    return;
  }

  foo(n - 1);
}

[1, 2, 3, 4, 5].map(function factorial(n) {
  return !(n > 1) ? 1 : factorial(n - 1) * n;
});

사용 방법

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

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

참고 자료