폐쇄 적 인 작은 예

1443 단어 JavaScript
먼저 작용 역 의 개념 을 설명 한다.
    자바 스 크 립 트 에 서 는 함수 만 작용 영역 을 가지 고 있 습 니 다.즉, 함수 내부 에서 설명 하 는 변 수 는 함수 외부 에서 접근 할 수 없습니다.
함수 에 정 의 된 변 수 는 함수 의 내장 함수 에서 접근 할 수 있 습 니 다.
다음 에 먼저 역할 영역의 예 를 들 어 보 겠 습 니 다.
function foo(){
    var a = 10;
    function bar(){
        a *= 2;
        return a;
    }
    return bar;
}

    이 예 에서 a 는 함수 foo 에 정의 되 어 있 지만 함수 bar 는 그것 을 방문 할 수 있 습 니 다. bar 도 foo 에 정의 되 어 있 기 때 문 입 니 다.bar 는 실행 과정 에서 a 를 a 곱 하기 2 로 설정 합 니 다.bar 가 foo 에서 호출 되 었 을 때 a 에 접근 할 수 있 습 니 다. 이해 할 수 있 습 니 다.그런데 만약 에 bar 가 foo 외부 에서 호출 된다 면?
function foo(){
    var a = 10;
    function bar(){
        a *= 2;
        return a;
    }
    return bar;
}

var baz = foo();//baz bar     
baz();//returns 20
baz();//returns 40
baz();//returns 80

var blat = foo();//blat bar        
blat();//returns 20,    a      

    상기 코드 에서 되 돌아 오 는 bar 함수 에 대한 인용 은 변수 baz 에 부 여 됩 니 다.이 함 수 는 현재 foo 외부 에서 호출 되 었 지만, 여전히 a 에 접근 할 수 있 습 니 다.이것 은 자 바스 크 립 트 의 작용 역 이 문법 적 이기 때문이다.함 수 는 그들의 역할 영역 을 정의 하 는 데 실 행 됩 니 다. (이 예 는 foo 내부 의 역할 영역 입 니 다) 그들의 역할 영역 을 호출 하 는 데 실 행 됩 니 다.bar 가 foo 에 정의 되 기만 하면 foo 에서 정의 하 는 모든 변 수 를 방문 할 수 있 습 니 다. foo 의 실행 이 끝 났 더 라 도.
    이것 이 바로 폐쇄 의 한 예 다.foo 가 돌아 온 후에 그 역할 영역 은 저장 되 었 으 나 돌아 온 함수 만 이 역할 영역 에 접근 할 수 있 습 니 다.앞의 예제 에서 baz 와 blat 는 각각 이 역할 영역 과 a 의 사본 이 있 고 그들 만 이 수정 할 수 있 습 니 다.인 라인 함 수 를 되 돌려 주 는 것 은 패 키 지 를 만 드 는 데 가장 자주 사용 되 는 수단 입 니 다.

좋은 웹페이지 즐겨찾기