eval()과 new Function()의 차이점 탐색
JavaScript에서는 eval()과 new Function()을 자주 비교합니다. 그들의 유사점과 차이점을 이해합니다. 이 문서에서는 동일한 작업을 수행하는지 조사하고 서로 다른 동작에 대한 자세한 설명을 제공합니다.
코드 예제
다음 코드 조각을 고려하세요.
var evaluate = function(string) { return eval('(' + string + ')'); } var func = function(string) { return (new Function( 'return (' + string + ')' )()); } console.log(evaluate('2 + 1')); console.log(func('2 + 1'));
이 코드에서 평가()는 eval()을 사용하여 문자열을 JavaScript 표현식으로 평가하는 반면, func()는 new Function() 생성자를 사용하여 문자열에서 함수 객체를 생성하고 즉시 실행합니다.
특이한 기능
두 함수 모두 문자열을 평가하지만 동일한 작업을 수행하지는 않습니다. 주요 차이점은 다음과 같습니다.
eval():
new Function():
차이점 강조 예
다음 코드를 고려하세요.
function test1() { var a = 11; eval('(a = 22)'); alert(a); // alerts 22 }
eval 대신 new Function('return (a = 22);')()가 사용된 경우 ()의 경우 new Function()이 주변 범위의 지역 변수에 액세스하지 않기 때문에 지역 변수 a는 원래 값을 유지합니다.
권장 사항 및 보안 고려 사항
일부 Douglas Crockford와 같은 JavaScript 개발자는 꼭 필요한 경우가 아니면 eval() 및 new Function() 사용을 권장하지 않습니다. 이 권장 사항은 두 함수 중 하나를 사용하여 신뢰할 수 없는 데이터를 평가하는 것이 위험할 수 있으므로 보안 문제에서 비롯됩니다.
따라서 일반적으로 eval() 또는 new Function( ).
위 내용은 Eval() 대 New Function(): 실제로 동일한 작업을 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!