티스토리 뷰

Javascript -클로저


> 클로저


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


-클로저는 내부함수와 밀접한 관계를 가지고 있는 주제다. 내부함수는 외부함수의 지역변수에 접근할 수 있는데 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. 이러한 메커니즘을 클로저라고한다.



> 내부함수


function outer(){
 function inner(){
   var title = 'coding everybody';
   alert(title);
}
 inner();
}
outer();

위의 예제에서 함수 outer의 내부에는 함수 inner가 정의되어있다. 함수 inner를 내부

함수라고 한다. 내부함수는 외부함수의 지역변수에 접근할수 있다.


function outer(){
 var title = 'coding everybody';
 function inner({
   alert(title);
})
 inner();
}
outer();


function outter(){
 var title = 'coding everybody';
 return function(){
   alert(title);
}
}
inner = outer();
inner();

외부함수는 이미 종료되었는데도, 내부함수에서 이미사라진 외부함수의 변수에 접근이 가능하다.

이것이 클로저의 중요한 특징이다!!

근데 어디에쓰나요?
> private variable

function factory_movie(title){
   return {
       get_title : function (){
           return title;
      },
       set_title : function(_title){
           title = _title
      }
  }
}
ghost = factory_movie('Ghost in the shell');
matrix = factory_movie('Matrix');

alert(ghost.get_title());
alert(matrix.get_title());

ghost.set_title('공각기동대');

alert(ghost.get_title());
alert(matrix.get_title());

Factory movie의 title은 외부함수가 종료되었기 때문에, 접근이 불가능할 것 같은데, 클로저 패턴을 적용하게 되면, 내부함수에서 접근이 가능하다. 변수가 private 해지는 장점이 있다! 오직 get title과 set title로만 접근이 가능하다!


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함