new Function
new Function 함수의 인자, 함수의 실행을 문자열로 주어서 함수를 생성하는 문법임
new Function([arg1, arg2 ...,],funcBody) 형태로 생성 가능 ( [] 안은 생략가능)
// num1 과 num2를 인자로 받아서 두 값을 합한 값을 리턴해 주는 함수를 생성
let new_func = new Function('num1','num2','return num1 + num2');
console.log(new_func(10,11));
//콘솔창에 "it is new function" 이라는 문자열을 출력하는 함수를 생성
let new_func2 = new Function('console.log("it is new function")');
new_func2()
클로저와 new Function
함수는 [[Environment]] 프로퍼티를 이용하여 자신이 태어난 장소를 기억할 수 있음
일반적인 지역 함수는 자신이 태어난 랙시컬 환경을 기억한다면 new Function으로 생성한 함수는 전역의 환경을 기억함
그러므로 new Function으로 생성한 지역함수는 함수의 외부변수는 참조할 수 없고 전역변수만 참조가 가능함
function test1(){
let local_a = 10;
let b = new Function('return local_a');
return b;
}
let global_a = 10;
function test2(){
let b = new Function('return global_a');
return b;
}
let a = test1();
let b = test2();
//전역변수global_a를 참조하므로 정상적으로 실행
console.log(b());
//상위함수의 변수 a를 참조할려고 하므로 참조오류 발생
console.log(a());
참조: https://ko.javascript.info/new-function
'JavaScript > JavaScript기초' 카테고리의 다른 글
[Javascript] 재귀와 스택 (0) | 2021.09.16 |
---|---|
[Javascript] 전역객체 (0) | 2021.09.10 |
[Javascript] JSON (0) | 2021.09.08 |
[Javascript] 날짜(Date) (0) | 2021.09.06 |
[Javascript] 이터러블(iterable) (0) | 2021.09.05 |