# 사전적 의미
클로저 ( Closures ) : 폐쇄
# 자바스크립트에서 클로저의 용도
자바스크립트에서는 프라이빗 메소드와 같은 방법을 제공하지 않는다.
하지만 클로저를 이용하면 프라이빗 메소드를 흉내낼 수 있다.
그래서 객체지향 프로그래밍의 정보 은닉과 캡슐화 같은 이점들을 얻을 수 있다.
# 클로저란?
함수와 함수가 선언된 어휘적 환경의 조합.
내부함수가 외부함수의 맥락에 접근할 수 있는 것.
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
};
var counter1 = makeCounter();
var counter2 = makeCounter();
alert(counter1.value()); /* 0 */
counter1.increment();
counter1.increment();
alert(counter1.value()); /* 2 */
counter1.decrement();
alert(counter1.value()); /* 1 */
alert(counter2.value()); /* 0 */
위 예제를 보면 chageBy함수의 privateCounter변수는 makeCounter함수의 privateCounter변수와 다를 것 같지만 changeBy함수는 makeCounter함수의 privateCounter변수를 참조한다. 그 반대는 참조 안됨.
'프로그래밍 > JavaScript' 카테고리의 다른 글
JavaScript 객체 그리고 this (0) | 2020.03.11 |
---|---|
ajax 동기식과 콜백으로 실행순서 조정 (0) | 2020.02.28 |
자바스크립트 호이스팅이란 (0) | 2020.02.13 |
함수 표현 방식 ( 표현식, 선언식, 익명함수 ) (0) | 2020.02.12 |
더블쿼터나 싱글쿼터 문자열로 인식하게 할 때 (0) | 2019.09.28 |
댓글