>웹 프론트엔드 >JS 튜토리얼 >JavaScript 전역 변수 캡슐화 모듈 구현 code_javascript 기술

JavaScript 전역 변수 캡슐화 모듈 구현 code_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:47:461271검색

아래 코드는 제 테스트 코드입니다. 주석은 매우 중요합니다.

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

/*전역 창,jQuery,validate_email,masterUI,$,rest*/
/**이 함수에 대해 ECMAScript "엄격한" 작업을 활성화합니다. 자세히 보기:
* http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
* http://stackoverflow.com/questions/5020479/what-advantages -does-using-functionwindow-document-undefine-windo
* Q1: 왜 창과 문서가 정상적으로 액세스되지 않고 피드되고 있나요?
* A1: 일반적으로 식별자 확인 프로세스를 가속화하려면 이를 로컬 변수로 사용하는 것이 도움이 될 수 있습니다(IMO에서는 성능 향상이 미미할 수 있지만).
* A2: 전역 객체 전달은 전역 범위에 창 식별자가 없는 비브라우저 환경에서도 널리 사용되는 기술입니다. 예:
* (function (global) {
* //..
* })(this); // 전역 실행 컨텍스트에서 이것은 전역 개체 자체입니다.
* A3: 창과 문서를 전달하면 스크립트를 더 효율적으로 축소할 수 있습니다.
*
* Q2: 도대체 정의되지 않은 것이 전달되는 이유는 무엇입니까?
* A1: 이는 ECMAScript 3의 정의되지 않은 전역 속성이 변경 가능하기 때문에 만들어졌습니다. 즉, 누군가가 해당 값을 변경하여 코드에 영향을 미칠 수 있다는 뜻입니다. 예를 들면 다음과 같습니다.
* undefine = true; // 변경 가능
* (함수 (정의되지 않음) {
* 경고(유형은 정의되지 않음); // "정의되지 않음", 로컬 식별자
* })(); // <-- 값이 전달되지 않음, 기본적으로 정의되지 않음
* 주의 깊게 보면 undefed가 실제로 전달되지 않는 경우(함수 호출에 인수가 없음),
* 이는 값을 가져오는 신뢰할 수 있는 방법 중 하나입니다. window.undef 속성을 사용하지 않고 정의되지 않은 값입니다.
*
*/
(함수(창, 문서, 정의되지 않음) {
" use strict";
window.test = {
init: function () {
"use strict";
alert("ok");
}
};
})(window , document);// 다른 사람이 변경한 변경 가능한 window.undefine 사용을 피하기 위해 여기에는 정의되지 않은 매개변수가 없습니다

1. 지침, stackoverflow의 기사 및 게시물을 참조하세요
2.(function(){})() 이런 종류의 코드는 별도의 js 파일에 작성되며 html로 js 파일을 로드하면 해당 함수가 실행됩니다. windows.text 개체가 실제로 생성됩니다.
향후에는 html 코드에서 test.init 형식으로 메소드를 호출할 수 있습니다.
코드의 테스트 html 부분은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.

[일반] 일반 카피프린트 보기

AppEngine SDK

;script type="text/javascript " src="../../master/script/app/test.js">


3.Jslint는 두 가지 질문을 보고할 것입니다. 하나는 정의되지 않음에 관한 것입니다. 좋은 방법을 찾지 못했기 때문에 그냥 불평하도록 놔두세요. 다른 형식의 최종 호출 방법을 다음과 같이 변경해야 합니다.


코드 복사 코드는 다음과 같습니다. [javascript ] view plaincopyprint?}(창, 문서)); }(창, 문서))

상관없어요. 그냥 놔두세요. 제대로 작동하는 한.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.