함수 동적생성

lee jae hwan·2022년 7월 25일

javascript

목록 보기
38/107
let func = new Function ([arg1, arg2, ...argN], functionBody);
let sum = new Function('a','b','return a+b;');
console.log(sum(1,2)); // 3

함수도 동적생성이 가능하다.

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

value변수를 찾을 수 없다는 에러가 발생되어 스크립트가 중단된다.

Function(alert(value)); value는 호출될때 접근하여 가져올값이다.

위코드에서 let value='test';로 선언하여 반환함수는 클로저가되어 연결된 외부실행컨텍스트객체로부터 value값을 가져올것으로 기대했다.

자바스크립트에는 new Function()으로 생성되는 함수의 [[Environment]]숨김속성에는 예외적으로 전역EC객체참조가 할당되도록 되어있어 에러가 발생한다.

따라서 오직 전역변수만 접근이 가능하다.
보안에서도 매개변수를 사용하는 것이 좋다

0개의 댓글