본문 바로가기

JavaScript/JavaScript기초

[Javascript] new Function 문법

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