정의 및 사용법 eval() 함수는 문자열을 계산하고 그 안에 있는 JavaScript 코드를 실행할 수 있습니다.
구문 eval(string) 매개변수 설명 string 필수입니다. 평가할 JavaScript 표현식 또는 실행할 명령문이 포함된 평가할 문자열입니다. 반환 값 문자열(있는 경우)을 평가하여 얻은 값입니다.
설명 이 메서드는 원본 문자열만 매개 변수로 허용합니다. 문자열 매개 변수가 원본 문자열이 아닌 경우 이 메서드는 변경되지 않은 상태로 반환됩니다. 따라서 String 객체를 eval() 함수에 대한 인수로 전달하지 마십시오.
ECMAScript 구현에서는 eval 속성을 재정의하거나 eval() 메서드를 다른 속성에 할당하고 해당 속성을 통해 호출하려는 경우 EvalError 예외가 발생하도록 허용합니다.
매개변수에 적합한 표현식이나 명령문이 없으면 SyntaxError 예외가 발생합니다.
eval()이 불법적으로 호출되면 EvalError 예외가 발생합니다.
eval()에 전달된 Javascript 코드가 예외를 생성하면 eval()은 예외를 호출자에게 전달합니다.
팁 및 참고 팁: eval()은 매우 강력하지만 실제 사용에서는 거의 사용되지 않습니다.
일반적으로 사용되는 예를 알려드리겠습니다.
<SCRIPT language="javascript"> function showsubmenu(sid) { whichEl = eval("submenu" + sid); if (whichEl.style.display == "none") { eval("submenu" + sid + ".style.display=\"\";"); } else { eval("submenu" + sid + ".style.display=\"none\";"); } } </SCRIPT>
평가 기능
기능: Javascript 코드를 먼저 해석한 후 실행
사용법: Eval(codeString)
codeString은 Javascript 문이 포함된 문자열로, eval 이후 Javascript 엔진을 사용하여 컴파일됩니다.
간단한 예:
var the_unevaled_answer = "2 3"
var the_evaled_answer = eval("2 3")
Alert("평가되지 않은 답변은 " the_unevaled_answer "이고 평가된 답변은 " the_evaled_answer);
이 평가 프로그램을 실행하면 "2 3"이라는 문자열이 실제로 JavaScript에서 실행되는 것을 볼 수 있습니다. 따라서 the_evaled_answer의 값을 eval("2 3")로 설정하면 JavaScript는 2와 3의 합을 이해하고 the_evaled_answer에 반환합니다.
조금 어리석은 것처럼 보일 수도 있지만 실제로는 매우 흥미로운 일을 할 수 있습니다. 예를 들어 eval을 사용하면 사용자 입력을 기반으로 직접 함수를 만들 수 있습니다. 이를 통해 프로그램은 반대 작업을 수행하여 시간이나 사용자 입력에 따라 자체적으로 변경할 수 있습니다
셋째, 놀라운 결과를 얻을 수 있습니다.
실제로 eval은 거의 사용되지 않지만, 누군가 eval을 사용하여 색인을 생성하기 어려운 객체를 얻는 것을 본 적이 있을 것입니다. DOM(문서 객체 모델)의 문제점 중 하나는 요청한 객체를 얻는 것이 때때로 어렵다는 것입니다. 예를 들어, 다음은 사용자에게 어떤 이미지를 변환할지 묻는 함수입니다. 어떤 이미지를 변환하려면 다음 함수를 사용할 수 있습니다.
function swapOne() { var the_image = prompt("change parrot or cheese",""); var the_image_object; if (the_image == "parrot") { the_image_object = window.document.parrot; } else { the_image_object = window.document.cheese; } the_image_object.src = "ant.gif"; }
다음 이미지 태그와 함께:
7ae70e6c03ca7573f51ff5cb76c64fbc
c68f5e529b0cc9066ee95a00e425079e
the_image_object = window.document.parrot
이미지 객체를 변수에 할당합니다. 조금 이상해 보이지만 문법적으로는 맞습니다. 하지만 2개가 아닌 100개의 이미지가 있으면 어떻게 될까요? 다음과 같이 될 수 있다면 if-then-else 문을 많이 작성해야 합니다.
function swapTwo() { var the_image = prompt("change parrot or cheese",""); window.document.the_image.src = "ant.gif"; }
다행히도 eval은 원하는 객체를 얻는 데 도움이 될 수 있습니다.
function simpleSwap() { var the_image = prompt("change parrot or cheese",""); var the_image_name = "window.document." + the_image; var the_image_object = eval(the_image_name); the_image_object.src = "ant.gif"; }