른록노트
[javascript] eval vs new Function 비교 본문
@ 공통점
문자열을 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