본문 바로가기

IT

자바스크립트 클로저

클로저 closer

클로저란 외부변수를 기억하고 이 외부변수에 접근할 수 있는 함수를 의미한다.
자바스크립트에서는 대부분 함수가 자연스럽게 클로저 된다.

 



  function outer(){
            let a = 3;
                        
            return function inner(){
                  return a + 4;
            }
        };

         let F = outer();
         let c = F(); 
          
        document.write(c);
        
        ==>
            function outer(){
                let a = 3;
                            
                return function inner(){
                      return a + 4;
                }
            };
    
             let F = outer();
             let c = F(); 
              
            let d = document.write(c);
                  
           

일반적으로 함수는 실행되고 메모리에서 사라진다. 즉, 클로저 된다.

하지만 out 함수가 실행되고 out 함수가 닫히지 못 한다.
내부 함수인 inner가 실행되기 위해서는 변수a 값이 필요한데,
그 변수 a가 외부함수에서 선언되어 있다.
따라서 inner 함수가 실행되어야만 외부 함수outer가 닫힐 수 있다.
이 처럼 inner가 외부함수를 닫을(클로저) 수 있기에 클로저라고 부른다.