[전송] Eval이 function을 만나면

5168 단어 function
IE에서 eval이 function을 만나면 IE에서 이상한 상황이 발생할 수 있습니다. 우리는 예를 들어 한 걸음 한 걸음 설명합니다.
상황1: eval에 function이 없으면 바로 실행합니다.
eval("alert('ss');");// 

상황 2: eval에 function이 있습니다. function은 즉시 실행됩니다.
eval("(function(){alert('ss');})();");// 

상황 3: eval에 function이 있습니다. 변수를 사용하여 function 인용을 저장하고 이 function을 호출합니다.
var f=eval("(function(){alert('ss');})");
f();
//IE :

eval에서 function을 정의하고 변수로 되돌릴 때 IE는 오류를 보고합니다. 대상이 없습니다.IE 아래 eval에서 정의한 function이 eval 외부로 되돌아오는 데 성공하지 못했음을 알 수 있습니다.
해결 방법: function 객체를 실행 결과로 되돌려줍니다.
방법 1:
var f=eval("(function(){ return function(){alert('ss');}})()");
f();
//

eval에서 즉시 실행되는 함수를 호출합니다. 이 함수가 실행된 후에 function 대상을 되돌려줍니다. 이 function 대상의 인용은 외부 변수로 되돌아옵니다.
방법 2:
var f=eval("(false||function(){alert('ss');})");
f();
//

이 방법도 jquery에서 사용하는 방법입니다.function은 또는 표현식의 실행 결과로 되돌아와도 문제를 성공적으로 해결할 수 있습니다.물론 표현식은 위의false||function() {}에만 국한되지 않습니다. 각종 표현식은 function을 성공적으로 되돌릴 수만 있다면 문제를 해결할 수 있습니다.
/*  :*/
var f=eval("(true&&function(){alert('ss');})");
f();
//

/* :*/
var f=eval("(true?function(){alert('ss');}:'');");
f();
//

the end..
JavaScript eval() 함수
정의 및 사용법
eval() 함수는 문자열을 계산하고 자바스크립트 코드를 실행합니다.
문법
eval(string)
매개 변수 설명
string이 필요합니다.계산할 문자열에는 계산할 JavaScript 표현식 또는 실행할 문구가 들어 있습니다.
반환값
string을 통해 얻은 값을 계산합니다.
설명
이 방법은 원시 문자열만 매개 변수로 받아들입니다. 만약string 매개 변수가 원시 문자열이 아니라면, 이 방법은 아무런 변화도 없이 되돌아옵니다.따라서 eval() 함수에 String 객체를 매개 변수로 전달하지 마십시오.
Eval 속성을 덮어쓰거나 () 방법을 다른 속성에 부여하고 이 속성을 통해 호출하려면 ECMAScript에서 EvalError 이상을 던질 수 있습니다.
내던지다
매개 변수에 올바른 표현식과 문장이 없으면 SyntaxError 이상을 내보냅니다.
eval () 을 잘못 호출하면 EvalError 이상이 발생합니다.
eval () 에 전달된 Javascript 코드에 이상이 생성되면, eval () 은 이 이상을 호출자에게 전달합니다.
팁 및 주석
힌트: eval () 의 기능은 매우 강하지만 실제 사용에 사용되는 경우는 많지 않다.
 
function
 showsubmenu(sid) {            whichEl 
=
 eval(
"
submenu
"
 
+
 sid);            
if
 (whichEl.style.display 
==
 
"
none
"
) {                eval(
"
submenu
"
 
+
 sid 
+
 
"
.style.display=\"\";
"
);            }            
else
 {                eval(
"
submenu
"
 
+
 sid 
+
 
"
.style.display=\"none\";
"
);            }        }
 

좋은 웹페이지 즐겨찾기