JavaScript의 eval() 함수는 문자열로 전달된 인수를 JavaScript 코드로 실행하는 기능입니다. 즉, 문자열을 JavaScript 표현식으로 평가(evaluate)하여 그 결과를 반환합니다.
eval() 함수의 주요 특징
- 문자열 형태의 JavaScript 표현식을 실제 코드로 실행할 수 있습니다.
- eval()은 별도의 실행 범위(scope)를 가지므로 보안상 주의가 필요합니다.
- 일반적인 코드 실행보다 속도가 느려 성능 저하를 일으킬 수 있습니다.
eval() 사용 시 주의사항
eval() 함수는 실행 속도가 느리고, 잘못 사용하면 웹사이트가 코드 삽입(injection) 공격에 노출될 수 있기 때문에 JavaScript에서 사용이 권장되지 않습니다. 외부에서 입력받은 문자열을 eval()로 실행하면 악성 코드가 그대로 실행될 위험이 있으므로, 가능한 한 다른 대안을 사용하는 것이 좋습니다.
eval() 함수 사용 예제
다음은 eval() 함수를 활용하는 간단한 예제입니다.
<html>
<body>
<script>
var a = 30;
var b = 12;
var res1 = eval("a * b") + "<br>";
var res2 = eval("5 + 10") + "<br>";
document.write(res1);
document.write(res2);
</script>
</body>
</html>위 예제에서 첫 번째 eval()은 변수 a와 b의 곱인 360을 계산하고, 두 번째 eval()은 문자열 "5 + 10"을 평가하여 15를 반환합니다.
결론
eval()은 문자열을 동적으로 실행할 수 있는 강력한 기능이지만, 성능 문제와 보안 취약점 때문에 실무에서는 사용을 자제해야 합니다. 대신 JSON.parse(), Function 생성자 등 더 안전한 방법을 고려하는 것이 바람직합니다.