<aside> 💡 엔지니어링 문서는 팀과 기술적으로 공유하고 싶은 내용을 적는 용도입니다.

</aside>

Table of Content

개요

이 글은 eval을 사용하면 안되는 이유, eval을 대체하는 방법, new Function을 이용하는 방법에 대해 다룹니다.

또한 FE 환경에서 eval을 대체하여 코드를 실행하는 대안들을 다룹니다.

Eval is evil

Eval is evil. - Douglas Crockford(JSON 창시자)

자바스크립트 개발자들 사이에 우스겟소리로 떠도는 말이며, 실제로 프로덕트에 eval을 집어넣으면 매서운 눈초리를 받을 수 있다. 왜 eval은 악마이며 사용하지 말라고 하는 것일까?

eval()의 정의

Untitled

경고: 주의: 문자열로부터 **eval()**을 실행하는 것은 엄청나게 위험합니다. **eval()**을 사용하면 해커가 위험한 코드를 사용할 수 있습니다. 아래에 [eval을 절대 사용하지 말 것!](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/eval#eval을 절대 사용하지 말 것!)을 확인하세요.

먼저 MDN의 eval을 보면 사용하지 말라는 경고부터 보여준다.

eval의 명세

eval(string);

문자열을 집어넣을 수 있으며, 반환값은 파라미터를 자바스크립트 엔진으로 실행한 결과 혹은 반환할 값이 없다면 undefined이다.