함수 유형 및 패키지 닫기

2133 단어
함수의 유형은 함수를 직접 설명하거나 익명으로 함수를 설명할 수 있다.일반 함수와 익명 함수는 기본적으로 같지만 일반 함수는 자동으로 함수 이름을 작용역의 맨 앞에 올린다.

일반 함수

function a(){

};

익명 함수

var a = function(){

};

이름이 없는 함수:function ();function 키워드를 사용하여 함수를 설명하지만, 함수에 이름을 붙이지 않으면 익명 함수라고 합니다.함수 실행 (function () {...})() 내부적으로 정의된 변수는 외부 변수와 충돌하지 않습니다.

가방을 닫다


패키지를 닫는 의미: 패키지를 닫는 것은 함수의 끼워넣기를 의미하며 내부에서 외부 작용역에 접근할 수 있도록 한다.메모리 상주, 변수 지속화.
function aaa(){
    var a=5;
    function bbb(){
        alert(a);
    }
    bbb{};
}

이것이 바로 간단한 클러치이자 클러치에 대한 가장 간단한 이해이다.물론 폐쇄는 집행 환경, 활동 대상과 작용역 등 더욱 깊은 이해가 있다.다만 여러분이 이것에 대해 기본적인 이해를 하길 바랍니다.
패킷을 닫는 단점: 함수가 실행되면 자동으로 소각되고 즉시 소각된 함수가 없으면 메모리 유출이 발생합니다.
사용 중에는 일부러 클립을 사용하지 않는 것이 가장 좋다.

연습 문제

function fun(n,o){
    console.log(o);
    return{
        fun:function(m){
            return fun(m,n);
        }
    };
}
var a=fun(0);a.fun(1);a.fun(2);a.fun(3);
var b=fun(0).fun(1).fun(2).fun(3);
var c=fun(0).fun(1);c.fun(2);c.fun(3);

var a의 답은 undefined, 0,0, 0


fun(0)은 첫 번째 fun 함수를 호출했고 n=1, o는undefined이다.fun(1)시 m=1,fun은 외층 함수 n을 닫았고 첫 번째 n=0, 즉 m=1을 호출했으며 내부에서 첫 번째 fun 함수 fun(1,0)을 호출했기 때문에 o는 0이다.fun(2)시 m=2이지만 a.fun을 호출했기 때문에 내부는 1층의fun(2,0)을 호출했기 때문에 o는 0이다.fun(3)동리, 여전히 0;

var b의 답은 undefined, 0, 1, 2입니다.


fun(0)은 첫 번째 fun 함수를 호출했고 o는 여전히 undefined입니다.fun(1)시 m=1,fun은 외부 함수의 n, 즉 m=1, n=0, o를 닫으면 0이다.fun(2)m=2, 현재 fun 함수는 첫 번째 실행 반환 대상이 아니라 두 번째 실행 반환 대상입니다.그리고 두 번째로 1층fun함수를 실행할 때(1,0) 그래서 n=1, o=0, 돌아올 때 두 번째 n을 닫았고 세 번째 3층fun함수를 호출할 때 m=2, n=1, 즉 1층fun함수fun(2,1)을 호출했기 때문에 o는 1이다.fun(3)시 m=3, 세 번째 호출된 n을 닫았습니다. 같은 이치로 최종적으로 첫 번째 fun 함수는fun(3,2)이기 때문에 o는 2입니다.

var c의 답은 undefined, 0,1,1


fun(0)의 o는 여전히 undefined입니다.fun(1)시 m는 1이고 이때 fun은 외부 함수의 n, 즉 처음 호출된 n=0, 즉 m=1, n=0을 닫고 내부에서 첫 번째 fun 함수fun(1,0)을 호출하기 때문에 o는 0이다.fun(2)시 m는 2이고 이때 fun이 패키지를 닫는 것은 두 번째 호출 n=1, 즉 m=2, n=1이며 내부에서 첫 번째 fun 함수 fun(2,1)을 호출하기 때문에 o는 1이다.fun(3)은 같은 이치이지만 두 번째 반환값을 호출하고 최종적으로 1층 fun함수 fun(3,1)을 호출하기 때문에 o는 1이다.

좋은 웹페이지 즐겨찾기