른록노트

[javascript] eval vs new Function 비교 본문

Programming/[Javascript]

[javascript] eval vs new Function 비교

른록 2020. 8. 13. 10:24

@ 공통점

  문자열을 script로 실행할 수 있다.

  

  eval(`console.log("test")`);

  // 결과 : test

  new Function(`console.log("test")`)();

  // 결과 : test

 

@ 차이점

  참조하는 범위가 다르다.

  eval은 실행하는 문자열이 참조하는 범위에 제약이 없다. ( 프로그램에 문제를 발생시킬 수 있음 )

  new Function은 실행하는 문자열에는 기존에 사용하는 변수를 사용할 수 없고, 범위가 제한되어있다

 

  function test (){

    var txt = "hello";

    var source = console.log(txt);

    eval(source);

    // 결과 : test

    new Function(source)();

    // 결과 : 에러 (txt is not defined)

  }

  test();

  

 

 

반응형
Comments