Note eval( ) 함수
앞에서 문자열을 연산자로 바꿀 수 없다고 했지만, 문자열을 자바스크립트 코드처럼 실행하는 방법이 있습니다. eval() 함수를 사용하는 방법입니다.
eval('1 + 2'); // 3
예를 들어, numOne이 5, operator가 -, numTwo가 2일 때 numOne + operator + numTwo는 ‘5 - 2’라는 문자열이 됩니다. 이 문자열을 eval() 함수로 실행하면 3이 반환됩니다.
document.querySelector('#calculate').addEventListener('click', () => {
if (numTwo) {
$result.value = eval(numOne + operator + numTwo);
} else {
alert('숫자를 먼저 입력하세요.');
}
});
코드가 간단해져서 편리하지만, eval() 함수는 해커가 악용할 가능성이 있습니다. eval() 함수에 문자열을 입력하면 그대로 실행되므로 해커가 이를 통해 프로그램에 위험한 코드를 실행할 수 있습니다. 따라서 실무에서는 eval() 함수를 사용하지 않는 것이 보안상 안전합니다.