ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • new Function 문법
    프로그래밍/Js 2021. 7. 5. 18:00

    함수 표현식과 함수 선언문 이외에 함수를 만들 수 있는 방법이 하나 더 있다.

    new Function 문법을 사용하면 함수를 만들 수 있다.

    let func = new Function ([arg1, arg2, ...argN], functionBody);

     

    새로 만들어지는 함수는 인수 arg1...argN 과 함수 본문 functionBody로 구성된다.

    let sum = new Function('a', 'b', 'return a + b');
    
    alert( sum(1, 2) ); // 3

     

    기존에 사용하던 방법과  new Function을 사용해 함수를 만드는 방법의 가장 큰 차이는 런타임에 받은 문자열을 사용해 함수를 만들 수 있는 점이다.

     

    보통 함수는 특별한 프로퍼티 [[Environment]]에 저장된 정보를 이용해 자기 자신이 태어난 곳을 기억한다.

    [[Environment]]는 함수가 만들어진 렉시컬 환경을 참조한다.

     

    하지만 new Function을 이용해 함수를 만들면 함수의 [[Environment]] 프로퍼티가 현재 렉시컬 환경이 아닌 전역렉시컬 환경을 참조한다.

    function getFunc() {
      let value = "test";
    
      let func = new Function('alert(value)');
    
      return func;
    }
    
    getFunc()(); // ReferenceError: value is not defined

    * 참조

    https://ko.javascript.info/new-function

    '프로그래밍 > Js' 카테고리의 다른 글

    var, let, const  (0) 2022.03.23
    call/apply와 데코레이터, 포워딩  (0) 2021.07.20
    객체로서의 함수와 기명 함수 표현식  (0) 2021.07.02
    JS-객체  (0) 2021.05.12
    JS - 추상관계비교  (0) 2021.02.24
Designed by Tistory.