'closure'에 해당되는 글 1건

  1. 2012.12.27 클로저에 대한 정리
728x90

<script>

function outer(){

return function(){

alert('hello world');

};

}

 

outer()();

</script>

 

보통 이렇게 함수를 리턴하게 만들수 있다.

결론은 함수를 리턴하는 함수를 사용하는 이유는 클로저(closure)때문이다.

 

<script>

function outer(name){

var output = 'hello' + name + '!';

}

 

alert(output);

</script>

 

이문장은 아무것도 출력하지 않는다 함수안에 있는 output 변수는 지역변수이므로 함수 외부에서 사용할수 없다

 

하지만 클로저를 사용하면 이 규칙을 위반할 수 있다.

 

 

<script>

function outer(name){

var output = 'hello' + name + '!';

return function(){

alert(output);

};

}

 

outer('anTta')();

</script>

 

오류가 발생할것 같지만 정상적으로 실행된다.

자바스크립트 스스로 지역 변수 output를 지우면 안된다는 것을 인식하고 남겨두는 특성이다 이것을 클로저라고 한다.

 

클로저의 정의는 다양하다.

지역변수를 남겨두는 현상을 클로저라고 부르기도 하고

함수 outer() 내부의 변수들이 살아있는것으로 함수 outer()으로 인해 생성된 공간을 클로저라고 부르기도한다.

또한 리턴되는 함수 자체를 클로저라고 부르기도 하며, 살아남은 지역 변수 output를 클로저라고 부르기도 한다.

클로저의 정의는 다양하므로 클로저가 어떤것인지 감만 잡으면 될듯 하다.

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침