JavaScript eval() 함수란?
JavaScript에서 eval() 함수는 문자열 형태로 전달된 인수를 평가(evaluate)하고 실행하는 내장 함수입니다. 문자열로 작성된 JavaScript 코드를 실제 코드처럼 해석하여 그 결과를 반환합니다.
eval() 함수의 기본 문법은 다음과 같습니다.
eval(str)
여기서 str에는 표현식(expression), 변수(variable), 또는 하나 이상의 문(statement)이 들어갈 수 있습니다.
배열에서 특정 값 가져오기
먼저 다음과 같은 학생 점수 배열이 있다고 가정해 보겠습니다.
var studentMarks = [76,34,56,78,81,98,90,59,64];
이제 eval() 함수를 사용해 배열의 특정 값을 가져와 보겠습니다. 아래 예제에서는 인덱스 1에 해당하는 값을 조회합니다.
예제 코드
var studentMarks = [76,34,56,78,81,98,90,59,64];
var stringValue = eval("studentMarks");
console.log(stringValue[1]);위 코드에서는 문자열 "studentMarks"를 eval()로 평가하여 실제 배열 객체로 변환한 뒤, 대괄호 표기법으로 인덱스 1의 값에 접근합니다.
프로그램 실행 방법
Node.js 환경에서 위 프로그램을 실행하려면 다음 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo80.js라고 가정합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo80.js 34
배열 studentMarks에서 인덱스 1 위치의 값인 34가 정상적으로 출력되었습니다.
eval() 사용 시 주의사항
eval()은 편리하지만 보안상 위험할 수 있으므로 신중하게 사용해야 합니다.
- 코드 삽입 공격 위험: 외부 입력값을 eval()로 실행하면 악성 코드가 실행될 수 있습니다.
- 성능 저하: eval()은 런타임에 코드를 컴파일하므로 일반적인 코드 실행보다 느립니다.
- 디버깅 어려움: 동적으로 생성된 코드는 디버깅과 유지보수가 까다롭습니다.
따라서 실무에서는 eval() 대신 JSON.parse(), 배열 인덱스 접근 등 더 안전한 대안을 사용하는 것이 권장됩니다.