JavaScript 함수 섹션 보충

3257 단어
이전에 함수의 호출을 말했는데, 이제 함수의 또 다른 중요한 개념을 말해 보자.
패키지 닫기: 함수 내부는 함수 외부의 변수에 접근할 수 있고, 함수 외부는 함수 외부의 변수에 접근할 수 없습니다.이런 불공평함을 깨기 위해 폐쇄가 생겼다.
먼저 간단한 예를 살펴보자.
var fun1= function () {
            var m=10;
            var inFun= function () {
                return m;
            }
            return inFun;
        }
        var f=fun1();
        alert(f());

이것이 바로 가장 기본적인 패키지 예입니다. 이 예에서 패키지는 자바의 get 함수로 이해되어 대상 내부의 속성을 얻을 수 있습니다.
위의 예의 또 다른 변체는 이렇지만, 나는 개인적으로 이렇게 쓰는 것을 좋아하지 않는다.   
   var fun1= function () {
            var m=10;
            var inFun= function () {
                alert(m);
            }
            inFun();
        }
        fun1();  

이렇게 쓰기 쉽기 때문이다.
        var fun1= function () {
            var m=10;
            var inFun= function () {
                return m;
            }
            inFun();
        }
        alert(fun1());

그러나 패키지 닫기는 상기 예의 작용 외에 다른 기능이 있다. 때때로 우리의 요구는 항상 많다. 방문 외에 우리는 함수 내부의 변수를 수정하고 아래의 예를 보기를 바란다.
        var fun1= function () {
            var m=10;
            var change= function (n) {
                return m+=n;
            }
            return change;
        }
        var ch=fun1();// , fun1 , 
        alert(ch(1));// 11

이것은 패키지를 닫는 또 다른 작용으로 원 함수를 호출한 후에 함수 내부의 변수에 접근할 수 있다.함수 내부의chage () 가 전역 변수에 인용되어 있기 때문에 m는 메모리를 종료하지 않습니다.
이 말을 한 후에 내부 함수의this작용역에 대한 문제도 많이 이야기할 것이다. 왜냐하면 이전에 함수의 호출에서 이미 말했기 때문이다. 그리고 개인적으로 이것은 함수의 패킷과 큰 관계가 없고 패킷도 내부 함수일 뿐이라고 생각한다.그래서 여기서는 그 점을 더 이상 말하지 않겠습니다.
리셋: 참을 수 없는 것은 js의 리셋입니다. 여러 층의 플러그인은 코드를 완전히 볼 수 없게 합니다.리셋이 여전히 망가졌는지 모르겠지만, 듣자니 node라고 한다.js의 비동기 리셋 함수는 바로 이채를 크게 방출하는 곳이다.어떤 사람들은 비동기적인 코드가 반인류적이라고 말하지만, 동기화된 일도 반인류적이지 않겠는가.밥을 먹으면서 텔레비전을 보는 것이 아니라 밥을 먹고 텔레비전을 보는 것을 참을 수 있는 사람은 없을 것 같다.
모듈: 때때로 js 코드와 자바 코드를 쓸 생각은 없으나 js에는 클래스가 없어서 보충으로 이와 유사한 모듈화를 제공했다.
사실 위의 클립은 약간 모듈화된 것 같다.다음은 자바 중류와 더 유사한 모듈화 코드를 보겠습니다.
        var model1=(function(){
            var m=10;
            var fun1= function () {
                alert(" fun1")
            }
            var fun2= function () {
                alert(" fun2")
            }
            return {
                fun1:fun1,
                fun2:fun2
            }
        })();
        // model1 
        model1.fun1();

model1을 위한 동적 추가 방법:
 var model1=(function(){
            var m=10;
            var fun1= function () {
                alert(" fun1")
            }
            var fun2= function () {
                alert(" fun2")
            }
            return {
                fun1:fun1,
                fun2:fun2
            }
        })();
        // model1 fun3
        var model2= (function (mod) {
            mod.fun3=function(){
                alert(" fun3")
            }
        })(model1);
        model1.fun3();

좋은 웹페이지 즐겨찾기