Computer Engineering/Javascript
Javascript -클로저
Ideveloper2
2018. 3. 18. 18:12
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());