JavaScript의 eval() 함수는 JavaScript 코드가 담긴 문자열 값을 인수로 받아, 해당 코드를 실제로 실행한 뒤 그 실행 결과를 반환하는 함수입니다. 즉, 문자열로 표현된 표현식이나 명령문을 런타임에 평가(evaluate)할 수 있게 해줍니다.
문법(Syntax)
eval() 함수의 기본적인 사용 문법은 다음과 같습니다.
eval(32*45);
예제(Example)
아래 예제에서는 산술 연산식을 평가한 결과와, String 객체를 인수로 전달했을 때의 동작을 함께 확인할 수 있습니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
document.write(eval(32*45));
document.write("<br>");
document.write(eval(new String("Hello welcome to Tutorialspoint")));
</script>
</body>
</html>
실행 결과(Output)
1440
Hello welcome to Tutorialspoint
첫 번째 호출에서는 문자열 "32*45"가 수식으로 평가되어 1440이 출력됩니다. 두 번째 호출에서는 String 객체가 문자열로 변환되어 그대로 반환되므로 원래 텍스트가 출력됩니다.
주의: 보안 및 성능 위험
eval()은 문자열을 그대로 코드로 실행하기 때문에, 사용자 입력 같은 외부 데이터가 포함된 문자열을 처리하면 악성 코드 실행(XSS 등)으로 이어질 수 있는 심각한 보안 취약점이 됩니다. 또한 JavaScript 엔진의 최적화를 방해하여 성능 저하를 유발할 수 있습니다. 따라서 실무에서는 eval() 사용을 피하고, JSON 파싱에는 JSON.parse(), 동적 함수 생성에는 Function 생성자 또는 일반적인 조건문·연산 로직으로 대체하는 것이 권장됩니다.