>  기사  >  웹 프론트엔드  >  JavaScript_javascript 스킬의 eval() 함수 사용법에 대한 자세한 설명

JavaScript_javascript 스킬의 eval() 함수 사용법에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:25:541392검색

eval() 함수는 JavaScript 문자열을 평가하고 이를 스크립트 코드로 실행합니다.

인수가 표현식인 경우 eval() 함수는 표현식을 실행합니다. 인수가 Javascript 문인 경우 eval()은 Javascript 문을 실행합니다.

문법

코드 복사 코드는 다음과 같습니다.

평가(문자열)

参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

eval() 함수 사용법에 대한 자세한 설명:

이 함수는 자주 사용되지 않을 수도 있지만 어떤 경우에는 큰 효과가 있습니다. eval() 함수의 사용법을 소개합니다.

이 함수는 문자열 str을 매개변수로 받을 수 있으며, 이 str을 자바스크립트 코드의 일부로 실행할 수 있습니다. str의 실행 결과가 값이면 이 값을 반환하고, 그렇지 않으면 정의되지 않은 값을 반환합니다. 매개변수가 문자열이 아닌 경우 매개변수가 직접 반환됩니다. 예시는 다음과 같습니다.

eval("var a=1");//声明一个变量a并赋值1。
eval("2+3");//执行加运算,并返回运算值。
eval("mytest()");//执行mytest()函数。
eval("{b:2}");//声明一个对象。

위 코드에 특별한 주의를 기울여야 합니다. 마지막 문은 객체를 선언합니다. 이 객체를 반환하려면 다음과 같이 객체 외부에 또 다른 괄호 레이어를 중첩해야 합니다.

코드 복사 코드는 다음과 같습니다.

eval("({b:2})");
위 내용에서는 eval() 함수의 사용법을 간략하게 소개하고 있는데, 비교적 이해하기 쉽습니다. 이 함수에서 가장 혼란스러운 점은 해당 내용을 예제와 함께 소개하겠습니다. 먼저 코드 예를 살펴보겠습니다.


function a(){ 
 eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
위 코드에서 첫 번째 경고() 함수는 1을 팝업할 수 있지만 두 번째 함수는 x가 정의되지 않았기 때문에 오류를 보고합니다.

위의 성능을 통해 eval() 함수는 새로운 범위를 생성하지 않으며 해당 범위는 자신이 위치한 범위라는 결론을 내릴 수 있습니다. 이는 모든 주류 브라우저에 해당되지만 때로는 eval() 함수의 범위를 전역 범위로 설정해야 할 때도 있습니다. 물론 eval()은 전역 범위에서 사용할 수 있지만 실제 응용 프로그램에서는 종종 사용됩니다. 전역 범위에서 이 함수를 사용하는 것은 window.eval()을 사용하여 구현할 수 있습니다. 예를 들어 위 코드는 다음과 같이 변환될 수 있습니다.

function a(){ 
 window.eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
위 코드에서는 두 개의 경고() 문 모두 정상적으로 1이 팝업될 수 있습니다. 다만, 이 방법은 표준 브라우저에서는 가능하지만, IE8 및 IE8 이하 브라우저에서의 성능은 여전히 ​​eval()과 동일하며 범위는 그들이 위치한 범위이다. 이때 IE 브라우저 고유의 window.execScript()를 사용하여 IE8 및 IE8 브라우저의 문제를 해결할 수 있습니다. 모든 주요 브라우저와 호환되도록 코드를 다음과 같이 수정합니다.


function a(){ 
 if(window.execScript){ 
  window.execScript("var x=1"); 
 } 
 else{ 
  window.eval("var x=1"); 
 } 
 console.log(x); 
} 
a(); 
console.log(x); 
브라우저가 window.execScript()를 지원하는 경우 이 기능을 사용하고, 그렇지 않은 경우 window.eval()을 사용하면 IE8 및 IE8 이하 브라우저의 문제를 해결할 수 있습니다.

위 내용은 편집자가 공유한 JavaScript의 eval() 함수 사용법에 대한 자세한 설명입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.