더북(TheBook)

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() 함수를 사용하지 않는 것이 보안상 안전합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.