ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaScript 클로저
    MOOC/생활코딩 2016. 4. 21. 22:38
    반응형

    2016.04.21.

     

    - 클로저

     

    클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다. 클로저는 자바스크립트를 이용한 고난이도의 테크닉을 구사하는데 필수적인 개념으로 활용된다.  




    1
    2
    3
    4
    5
    6
    7
    8
    function outter(){
        function inner(){
            var title = 'Hello World JavaScript Closer'
            alert(title);
        }
        inner();
    }
    outter();
    cs


    자바스크립트는 함수 안에서 또 다른 함수를 선언할 수 있다. 위의 코드는 내부함수에서 외부함수로의 지역변수에 접근하여 title변수의 내용을 출력할수 있다.


    1
    2
    3
    4
    5
    6
    7
    8
    function outter(){
        var title = 'Hello World JavaScript Closer';  
        return function(){        
            alert(title);
        }
    }
    inner = outter();
    inner();
    cs




    클로저는 외부함수(포함하고 있는)의 변수에 접근할 수 있는 내부 함수를 일컫습니다. 스코프 체인(scope chain)으로 표현되기도 합니다. 클로저는 세가지 스코프 체인을 가집니다: 클로저 자신에 대한 접근(자신의 블럭내에 정의된 변수), 외부 함수의 변수에 대한 접근, 그리고 전역 변수에 대한 접근. 이렇게 3단계로 구분할 수 있습니다.

    내부 함수는 외부 함수의 변수뿐만 아니라 파라미터에도 접근할 수 있습니다. 단, 내부 함수는 외부 함수의 arguments 객체를 호출할 수는 없습니다. (하지만, 외부 함수의 파라미터는 직접 호출할 수 있습니다.)

    클로저 예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function showName(firstName, lastName) {
        var nameIntro = "Your name is ";
        // 이 내부 함수는 외부함수의 변수뿐만 아니라 파라미터 까지 사용할 수 있습니다.
        function makeFullName() {
            return nameIntro + firstName + " " + lastName;
        }
        return makeFullName();
    }
    showName("Michael""Jackson"); // Your name is Michael Jackson
    cs


    반응형

    'MOOC > 생활코딩' 카테고리의 다른 글

    JavaScript 함수의 호출  (0) 2016.04.23
    JavaScript Arguments  (0) 2016.04.22
    JavaScript 값으로서의 함수와 콜백  (0) 2016.04.21
    JavaScript 유효범위  (0) 2016.04.19
    JavaScript 정규표현식  (0) 2016.04.19

    댓글

Designed by Tistory.