본문 바로가기

Development /JavaScript

[자바스크립트] 클로저

클로저

 

클로저 : 함수 내에 선언된 로컬 변수를 외부에서도 참조할 있는 기능

  • 보는 관점에 따라 모든 자바스크립트 함수가 클로저라고 있음

 

사용처

this.XXXX 넘기기 위해 사용한다

private변수(보호 해야 변수) 사용한다

 

주의점

클로저는 변수만 기억할 값은 기억 하지 않는다

  • 반복문(for)에서는 클로저를 사용하지 않는다

 

클로저를 이해하기 위한 예문

function closureTest(a){

     return function(b){

          return a + b;

     }

}

var test = closureTest(1);

alert(test(2));

 

1. closureTest(1) 호출한 순간 아래의 영역에 var a =1 생성되고

function(b){ return a+b; } test 리턴 된다. 그래서 test() 사용 가능하게 해준다.

function closureTest(a){

     return function(b){

          return a + b;

     }

}

 

2. alert(test(2)) 호출하면 function(b){ return a+b; } 기억하고 있던 a변수를 불러들이고 b 값에 2 대입된다

 

3. 그러므로 위의 결과는 3 나온다

 

클로저는 C언어에서 “&” 키워드를 사용하여 정의하는 참조 변수라고 생각하면 개념이해가 쉬울 이다

 


* 출처 : 넥스트리소프트(주) 인큐베이팅 멘토 선임님 & 문학청년님의 강의 정리