[전송] Eval이 function을 만나면
5168 단어 function
상황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\";
"
); } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.