eval 과 window.eval 의 차이 분석
1451 단어 evalwindow.eval
...
function callback(str){
var json = eval('(' + str + ')');
}
...
var json=window.eval('('+str+')'이 아 닌 eval 을 직접 사용 합 니 다.또한 디 버 깅 할 때 alert 를 사용 하면 window.alert 를 사용 하 는 사람 이 별로 없다.IE 에서 이벤트 대상 을 가 져 오 려 면 이 벤트 를 사용 합 니 다.윈도 우즈 이 벤트 를 사용 하 는 사람 은 거의 없습니다.(Firefox 에 서 는 window.event 대신 이벤트 도 지원 합 니 다.관심 있 는 학생 들 은 이 사건 의 대상 을 얻 은 가족 을 보 세 요)그러나 각 엔진 의 차이 로 인해 그들의 차 이 는 여전히 있 습 니 다
var x = 5;
function fn(){
var x = 'jack';
eval('x=10;');
}
fn();
alert(x); // -->5
모든 브 라 우 저 에서 출력 한 것 은 5 입 니 다.fn 을 호출 한 후 eval 에서 fn 내 부분 변수 x 를 수정 한 것 이지 전체 x 가 아 닙 니 다.즉,eval 이 실행 하 는 패 킷 환경 은 fn 내 에 있 습 니 다.수정 하여 상기 코드 의 eval 을 window.eval 로 바 꾸 고 테스트 한 결과 각 브 라 우 저 에서 의 표현 이 다른 것 을 발견 하 였 습 니 다.IE6/7/8:전역 변수 x 를 수정 하지 않 고 부분 변수 x 를 출력 합 니 다.IE9/Firefox/safari/chrome/Opera:출력 10,전역 변수 x 를 수정 합 니 다.IE6/7/8 에서 eval 은 window.eval 과 마찬가지 로 사용자 정의 함수 에 부분 적 으로 닫 혀 있 으 며,그렇지 않 으 면 전역 적 으로 닫 혀 있다 는 결론 을 얻 을 수 있 습 니 다.IE9/Firefox/safari/chrome/Opera 에서 eval 은 이상 IE6/7/8,window.eval 은 사용자 정의 함수 에 쓰 여 있어 도 전역 적 으로 닫 힙 니 다.또한 IE 의 window.execScript 는 항상 전체 패키지 에서 실 행 됩 니 다.놀랍게도 크롬 도 이 방법 을 지원 합 니 다.허,크롬 정책 은 표준 입 니 다.IE 하 나 는 빠 질 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
진정한 이스케이프 시퀀스를 Perl로 보는 REP르 p. pl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.