- 요즘 한번쯤은 다 들어 봤을것이다. 병렬처리가 화두가 되면서 떠올랐는지 모르겠지만, 내주변에 클로저로 되게 유명한 분도 계시더라..아무튼 자바스크립트에서 클로저를 어떻게 사용하는지 한번 봐보겠다~
* 클로저란? 한마디로 말하면은 로컬 변수를 참조하고 있는 함수 내의 함수 또는 일종의 기억 영역을 제공하는 구조 라고 말할수도 있겠다.
그럼 소스를 통해 봐보겠다.
function closure(init){
var counter = init;
return function(){
return ++counter;
}
}
var myClosure1 = closure(1);
var myClosure2 = closure(100);
document.writeln(myClosure1()); //2
document.writeln(myClosure2()); //101
document.writeln(myClosure1()); //3
document.writeln(myClosure2()); //102
* 리터 값으로 함수를 주는함수를 고계함수라고 한다. 고계함수 뿐만 아니라 지금 보이는 것은 함수를 호출할때마다 독립적인 값을 계속 유지 하는 것을 볼수 있다. 마치 우리가 객체를 인스턴스화 하여 호출 하는 것을 보는 듯 하다. 그래서 누구는 클로저를 간단한 객체라고 부르기도 한다. 하지만 객체와 다른점은 클로저는 하나의 기능만 가질수 있다. 즉 객체처럼 여러개의 메소드를 호출 할수는 없다. 또한 객체 지향에서는 클로저도 객체로 만들어야 된다는 룰이 있기도 한데, 그것은 선택이라 할수 있겠다.
'WEB의 속삭임 > Client단의 외침' 카테고리의 다른 글
[JavaScript][객체][프로토타입 체인] 자바스크립트의 상속! (0) | 2014.07.28 |
---|---|
[JavaScript][객체] 자바스크립트의 간단한 객체 (0) | 2014.07.26 |
[JavaScript][정규식]정규식을 사용하여 URL 체크 (0) | 2014.06.08 |