>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 학습 노트 4 평가 기능_기본 지식

자바스크립트 학습 노트 4 평가 기능_기본 지식

WBOY
WBOY원래의
2016-05-16 18:36:491048검색

eval의 기능은 실제로 매우 간단합니다. 문자열을 JS 인터프리터에 전달하면 Javascript 인터프리터가 해당 문자열을 Javascript 코드로 해석하여 실행합니다.
가장 간단한 예:

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

< script type="text/javascript">
eval("alert(1 1)");


문자열을 JS로 해석합니다. 코드가 실행되고 2가 나타납니다.
물론 위의 예는 단지 장난감일 뿐이고, 현실에서 사용할 정도로 멍청한 사람은 없을 것입니다. eval 함수를 사용하는 가장 기본적인 방법은 DOM에 있다고 생각합니다. 예를 들어 div1, div2, div3이 있는 경우 document.getElementByID를 사용할 때 ID를 얻을 수 있는 방법이 없습니다. 그러한 프로그램을 연결하려면 eval을 사용하십시오. 예:
코드 복사 코드는 다음과 같습니다.



가장 기본적인 사용법을 말씀드리자면 아직도 이 기능에 관심이 많으실 것 같습니다. 지루한. 그럼 eval() 함수를 하나씩 살펴보겠습니다.
eval의 범위부터 시작하여 이 함수를 살펴보겠습니다.
코드 복사 코드는 다음과 같습니다.

>
코드는 매우 간단하며 결과가 팝업될 수 있습니다. 3. 다음으로, 이 코드를 비교하세요:

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



결과적으로 3이 먼저 나타난 다음 정의되지 않습니다.
그럼 설명하세요. eval() 함수에 의해 동적으로 실행되는 코드는 새 범위를 생성하지 않으며 해당 코드는 현재 범위에서 실행됩니다. 즉, eval() 함수는 현재 범위의 this, 인수 및 기타 개체를 사용할 수도 있습니다.
IE에서는 eval()과 매우 유사한 execScript()라는 함수가 지원됩니다. 간단한 코드를 작성할 수 있습니다.





결과적으로 3이 2개나 나오는데, 이는 우선 eval과 유사하다는 점이기도 합니다. 문자열을 JS로 해석 코드가 실행되지만 해당 범위는 현재 범위가 아니라 전역 범위입니다. 위의 코드를 Firefox와 Google Chrome에 넣고 시도해 보면 execScript의 코드가 Firefox에서 유효하지 않다는 것을 알게 되는데, 이는 또한 execScript 코드의 브라우저 호환성에 문제가 있음을 나타냅니다.
그러면 이 두 기능의 '장점', 즉 글로벌 브라우저 호환성을 어떻게 결합할 수 있는지에 대한 질문으로 이어집니다. 제가 직접 인터넷에서 검색해서 정리해 보면 이렇습니다.



이것은 FF 및 IE와 완벽하게 호환됩니다. 필수 코드는 FF에서 eval과 window.eval이 동일하지 않다는 것입니다.
또한 eval을 사용하여 몇 가지 이상한 트릭을 수행할 수도 있습니다.
일반적으로 다음과 같은 코드를 작성할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var obj = function () {
this.a = 1;
this.b = 2;
this.c = 5;
this.c = this.a this.b;
}
}
var o = new obj()
o.fun()
alert(o.c) ;

또는 다음과 같습니다.

코드를 복사하세요 코드는 다음과 같습니다.
var obj = {
a: 1,
b: 2,
c: 5,
fun: function () {
this.c = this.a this.b;
}
}

또는 다음:

코드 복사 코드는 다음과 같습니다.
var obj = function () {
this.a = 1
this.b = 2
this.c = 5; 🎜>};
obj.prototype.fun = function () {
this.c = this.a this.b
var o = new obj(); .fun();
alert(o.c);


아무튼 피곤하시죠? 그렇다면 적어도 감각적으로는 좀 더 편안할 수 있도록 전혀 다른 접근 방식을 취해보자.



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


너무 강렬해서 너무 좋아요. 보기에 편할지 말지는 논하지 않겠습니다. 그러한 상황에 대해 논의해 봅시다.



코드 복사

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

관련 기사

더보기