eslint/no-caller 정확성
작동 방식
arguments.caller 또는 arguments.callee의 사용을 금지합니다.
왜 좋지 않은가?
arguments.caller와 arguments.callee의 사용은 여러 코드 최적화를 불가능하게 만듭니다. 이들은 자바스크립트에서 비공식적으로 폐기되었으며, 엄격 모드에서는 사용이 금지되어 있습니다.
js
function foo() {
var callee = arguments.callee;
}이 규칙은 arguments.caller 및 arguments.callee의 사용을 금지함으로써 폐기된 및 비효율적인 코드 사용을 저지하고자 합니다. 따라서 arguments.caller 및 arguments.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