본문 바로가기
STUDY/JavaScript

[JavaScript] 문자열 함수 실행 eval() , new Function()

by bottlesun 2022. 11. 27.
728x90

eval()

eval()은 문자로 표현된 JavaScript 코드를 실행하는 함수이다.


MDN 사이트를 확인해보면 해당 문제로 사용을 권장하지 않는다. 절대 사용하지 말라는 문구까지 사용 할 정도이다.

그럼 eval()의 대체를 알아보자

new Function()

새 함수 객체를 만든다.
이 생성자를 직접 호출하여 동적으로 함수를 생성할 수도 있으나, 보안 문제 및 eval과 유사한(그러나 훨씬 덜 심각한) 성능 문제가 발생할 수 있다.
하지만 eval과 달리, Function 생성자는 전역 범위로 한정된 함수만 생성하기에 대체로 사용한다.

      const icon1 = 'hi1'
      const icon2 = 'hi2'
      const icon3 = 'hi3'
      const icon4 = 'hi4'

      for(let i = 1 ; i <= 4 ; i++){
            let a = (new Function("return " + `icon`+i))();

            //console.log(eval("icon"+i));
            console.log(a);
        }

3. 출력값

 

728x90

댓글