[javascript]
[Javascript] new Funtion의 사용한 동적(런타임) 함수 만들기
미나미나미
2020. 8. 2. 16:41
# new Function 함수
- 런타임상에 문자열을 사용해 함수를 만들 수 있다는 장점.
- 함수의 인자값을 서버로 부터 받아서 동적으로 함수를 생성할 때, 유용하게 사용 가능.
- 단, new Function의 생성은 오직 전역 변수에만 접근 가능
# newFunction 함수 문법
var function = new Function([arg1, arg2 ... argN] , functionBody);
# new Function 예시
- sum 함수
var sum = new Function('a' , 'b' , 'return a + b;');
var sum = new Function('a , b' , 'return a + b;');
sum(1,2); //3
- alert 띄우기
var alertFunc = new Function( 'v', 'alert(v)'));
- 화살표 함수 생성하기
function arrowFuncMake(str) {
var splitted = str.split("=>");
console.log(splitted);
return new Function(splitted[0], "return (" + splitted[1] + ");");
}
arrowFuncMake('n => n * 10')(10);
// 100
arrowFuncMake('n => n * 10')(20);
// 200
arrowFuncMake('n => n * 10')(30);
// 300
arrowFuncMake('a ,b => a + b')(10,20);
// 30
# new Fucntion은 전역 변수만 접근 가능
var value = "1111";
function getFunc() {
var value = "test";
var func = new Function('alert(value)');
return func;
}
getFunc()();
// alert시 1111이 띄워짐