1. eval()

eval 함수는 string 형태의 코드를 매개변수로해서 string으로 되어있는 수식들을 계산해주는 함수이다.

하지만 보안상의 이유로 쓰지 않는 것이 좋다.

eval()은 인자로 받은 코드를 caller의 권한으로 수행하는 함수로, 악영향을 줄 수 있는 문자열을 eval()로 실행하면 악의적인 코드를 수행하는 결과를 초래할 수 있다. 제 3자가 eval()이 호출된 위치의 스코프를 볼 수 가 있게되고, function으로 실행할 수 없는 공격이 가능하다.

2. new Function()

이러한 보안상의 이유로 eval()을 대체하는 함수가 new Function()이다.

기본문법

new Function([arg1,arg2,arg3 ... argN], functionBody)

ex)

let sum = new Function('return 1+3');

sum(); // 4