Skip to content
← Back to rules

eslint/no-new-func 스타일

작동 방식

Function 객체와 함께 new 연산자를 사용하는 것을 금지합니다.

왜 좋지 않은가?

new Function 또는 Function를 사용하면 이해하기 어렵고 유지보수가 어려운 코드로 이어질 수 있습니다. 문자열 형태의 코드로부터 새로운 함수를 생성하므로, eval과 유사한 보안 위험이 발생할 수 있으며, 주입 공격의 경로가 될 수 있습니다. 또한 이 함수들은 자바스크립트 엔진에서 최적화되지 않기 때문에 성능에 부정적인 영향을 미칩니다.

예시

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

js
var x = new Function("a", "b", "return a + b");
var x = Function("a", "b", "return a + b");
var x = Function.call(null, "a", "b", "return a + b");
var x = Function.apply(null, ["a", "b", "return a + b"]);
var x = Function.bind(null, "a", "b", "return a + b")();
var f = Function.bind(null, "a", "b", "return a + b");

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

js
let x = function (a, b) {
  return a + b;
};

사용 방법

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

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

참고 자료