js_javascript 기술에서 'with' 문을 사용할 때 프레임 간 변수 참조 문제

WBOY
풀어 주다: 2016-05-16 19:17:39
원래의
1172명이 탐색했습니다.

스크립트 프로그래밍 중에 with 문을 사용하면 다중 레벨 개체 참조를 사용하여 코드 줄 길이를 크게 줄일 수 있습니다. 이것은 JScript에서 제공하는 Syntax Sugar입니다. 물론 with를 사용하는 대신 임시 변수를 사용하면 동일한 효과를 얻을 수 있습니다. 그러나 변수를 생성할 때 이름을 지정하는 것은 실제로는 그리 멋진 일이 아닙니다. MASM의 상위 버전에서도 임시 레이블 문제를 처리하기 위해 @@(및 @F 및 @B)를 제공하는 것 같습니다. 게으른. .

나는 또한 with 문을 사용하는 것을 좋아합니다. 실제로 많은 작업을 절약하고 코드를 더 명확하게 만들 수 있으며, 특히 프레임 간 변수 참조를 처리할 때 더 편리합니다. 오늘은 편의상 다시 총을 겨누지 않았나요?

제가 작성한 코드는 실제로 복잡하지 않습니다. with에서는 다른 프레임에서 많은 변수 참조와 계산 작업을 수행한 후 결과가 이 페이지의 함수의 로컬 변수에 할당됩니다. 예제 코드는 대략 다음과 같습니다. // ...
var hierarchies = [];
with(parent.frames['xxxFrame'])
{
// 변수를 참조하여 생성됨 xxxFrame의 값
hierarchies.push(xxx);
}

// 계층 사용 시작
이때는 아무리 해도 계층이 미쳐갑니다. 내부에서 값을 가져오면 항상 원하는 것과 동일합니다. 가치가 있지만 완전히 틀린 것은 아닙니다. (이런 일이 발생하는 이유는 나중에 설명하겠습니다. 이 부분은 디버깅할 때 심각하게 혼란스럽기도 합니다. 정말 고생했어요).

왜 그럴까요? 드디어 xxxFrame에 hierarchies라는 변수가 있다는 것을 알게 됐고, 그것도 배열이라는 걸 알게 됐어요. 내용이 제가 넣은 것과 비슷해서 왜 헷갈렸는지 아까 말씀드렸죠. 그리고 그게 다가 아닙니다. 이전에 여러 페이지에 걸쳐 데이터를 가져오기 위해 유사한 with를 작성했는데 매우 잘 작동했기 때문에 나는 무의식적으로 with 안의 계층이 with 밖의 계층이라고 느꼈습니다. xxxFrame의 변수를 직접 정의했는지는 기억이 나지 않습니다. 어쨌든 디버깅할 때 한동안 우울했습니다.(.

JScript 매뉴얼에 with(objects) 문의 기능은 다음과 같습니다. 그러나 with 안에는 변수 범위에 대한 검색 규칙이 있는데, 이는 기본 개체(객체)와의 일치를 우선시하는 것입니다. distance", like cross-frame. 상황. 기본 객체 참조가 일치할 수 없는 경우 이전에 선언한 변수와 일치합니다.

이 기사는 "Waterloo in debug"에만 포함될 수 있습니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!